Skip to main content
 首页 » 编程设计

Python模块名称冲突

2024年10月25日1artech

我有一个以我正在开发的产品命名的模块,一些第 3 方使用相同的模块名称为我们产品的 API 构建了一个包。在尝试使用后者时,模块名称会发生​​冲突。如果我更改 API 包的名称,我将无法轻松进行更改并回馈上游。更改我们的模块名称会很麻烦。

这听起来像是一个疯狂的问题。现在我们正在通过向 API 模块添加一个“父”模块来解决它。有没有更好的解决方案?

请您参考如下方法:

您应该以这种方式将您自己的模块包装在一个包中:

  1. 创建目录(例如 mypylib)
  2. 将名为__init__.py 的空文件放入目录
  3. 将您的模块实现文件(例如mymod.py)放在目录中
  4. 假设在 mymod.py 中实现了一个名为 submod 的子模块

当你想使用submod时,你应该这样做:

sys.path.insert(0, os.path.join(os.path.dirname(__file__), "mypylib")) 
from mypylib.mymod import submod 

我认为大多数 3rd 方模块都应用类似的规则来避免命名冲突,你也应该这样做。

在您当前的情况下,您可以简单地将 __init__.py 和您的模块放在包目录中,然后对所有源文件进行字符串替换以应用模块的新安排。

希望对您有所帮助。