我有一堆代码生成的文件:
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__
答案 0 :(得分:1)
好吧,您可以在其他任何事情发生之前通过运行import sys; sys.path.append('path/to/project/parent')
作为代码的第一行来操纵导入机制。或类似地,set the PYTHONPATH
environment variable。
但是这种hack虽然可以立即解决您的问题,但具有在不久的将来使问题更难解决的特性。例如,您的IDE不会意识到这一点,并会不断警告您文件不可导入,并且在运行应用程序,测试套件或程序包生成器时断言路径设置正确可能很棘手,或文档生成器,...
这就是为什么,正如您在评论中还指出的那样,最好将parent
转换为适当的程序包,并将子模块路径更新为import .b as b__
或导入from parent import b as b__