python导入2级包

时间:2017-08-15 12:43:00

标签: python git import git-submodules

我在项目中添加了一个git子模块。现在该子模块中的所有导入都被破坏了,因为我必须使用导入的完整路径。 例如,如果结构是这样的:

MYPROJECT:
- submodule_project:
- package1:
--- code1.py
- package2:
--- code2.py

现在,在code1.py中有from package2 import code2。它告诉我package2是未解析的引用。只有在我将其更改为from submodule_project.package2 import code2时才会解决 我不想要这个,因为我不想更改子模块中的任何内容。我刚刚添加它以在我的项目中使用它的一些软件包,并在开发人员更新它时定期更新。

1 个答案:

答案 0 :(得分:0)

如果您希望package2成为顶级可导入包,则其父目录(在您的情况下为submodule_project)必须位于sys.path。有很多方法可以做到:sys.path.append()sys.path.insert()PYTHONPATH环境变量。

或者您可能根本不想将代码作为子模块。如果子模块中的代码使用绝对导入而不是相对(from ..package2 import code2),则拥有子模块没有意义。可能是软件包应安装在site-packages(全局或虚拟环境)中,但不作为子模块附加到项目中。