在不弄乱内部导入的情况下移动 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
如果您的模块是独立的,如果它使用相对导入,您可以毫无问题地重新定位它。
我写了一个包含很多模块的 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
如果您的模块是独立的,如果它使用相对导入,您可以毫无问题地重新定位它。