Python模块名称冲突

时间:2014-06-20 01:59:34

标签: python python-import python-module

我有一个以我正在处理的产品命名的模块,而第三方为我们的产品API构建了一个具有相同模块名称的软件包。在尝试使用后者时,模块名称发生冲突。如果我更改API包的名称,我就不能轻易做出更改并向上游做出贡献。更改我们的模块名称将是一团糟。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

    我希望这会有所帮助。