我有一个以我正在处理的产品命名的模块,而第三方为我们的产品API构建了一个具有相同模块名称的软件包。在尝试使用后者时,模块名称发生冲突。如果我更改API包的名称,我就不能轻易做出更改并向上游做出贡献。更改我们的模块名称将是一团糟。
这听起来像个疯狂的问题。现在我们通过添加一个"父母"来解决它。模块到API模块。有没有更好的解决方案?
答案 0 :(得分:1)
您应该以这种方式将自己的模块包装在一个包中:
mypylib
)__init__.py
的空文件mymod.py
)放入目录submod
mymod.py
的子模块
醇>
当您想使用submod
时,您应该这样做:
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "mypylib"))
from mypylib.mymod import submod
我认为大多数第三方模块都采用类似的规则来避免命名冲突,你也应该这样做。
在您目前的情况下,您只需将__init__.py
和您的模块放在包目录中,然后对所有源文件进行字符串替换即可应用模块的新安排。
我希望这会有所帮助。