我有一堆代码生成的文件。
parent/
a.py
b.py
<...>
aa.py
假设它们在任何包的根目录下,它们就会互相导入。
例如 a.py
:
import b as b__
我想把整个 parent
子目录到另一个项目中,这样产生的树看起来就像
project/
main.py
parent/
a.py
b.py
<...>
但是,上述树中的父类中的所有内容就会出现相互导入的问题。除了通过进入每一个的 a.py
, b.py
例如,做下面的100次。
import .b as b__
好吧,你可以通过运行以下命令来操纵导入机制 import sys; sys.path.append('path/to/project/parent')
作为第一行代码,然后才有其他事情发生。或者类似地。摆设 PYTHONPATH
环境变量.
但是,这种黑客虽然现在可以解决你的问题,但却有让事情在不久的将来更难解决的特性。例如,你的IDE不会意识到这一点,会不断地警告你你的文件不能导入,而且当运行你的应用程序、测试套件、包构建器或文档构建器时,要保证路径设置正确可能会很棘手......。
这就是为什么,正如你在评论中所指出的,最好将 parent
到一个合适的包中,并将子模块路径更新为或 import .b as b__
或导入 from parent import b as b__
.