在不弄乱内部导入的情况下移动 python 包

Moving python package without messing internal imports

我写了一个包含很多模块的 python 包。模块在包内相互导入。 现在完成后,我希望将我的包作为子目录移动到另一个包中。但我做不到,因为现在所有导入都会出错,因为它们无法在新路径上找到模块。

例如-

在模块 my_package.a 中我有:

x = 5

在模块 my_package.b 中:

from my_package.a import x 
print x

之前我做了:from my_package import b,现在我想做from tools.my_package import b,并得到相同的结果。

无需将新路径添加到 sys.path 即可更改包逻辑路径的正确方法是什么?

我会在内部使用相对导入:

from .a import x

如果您的模块是独立的,如果它使用相对导入,您可以毫无问题地重新定位它。