2017-08-15 45 views
0

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

MYPROJECT:
- submodule_project:
- 包1:
--- code1.py
- 包2:
--- code2.py

现在,在code1.py中有from package2 import code2。它告诉我package2是未解决的参考。只有将其更改为from submodule_project.package2 import code2才能解决问题。
我不想要这个,因为我不想改变子模块中的任何东西。我只是添加它来在我的项目中使用它的一些软件包,并在开发人员更新时定期更新它。

回答

0

如果你想package2是一个顶级的可导入包,它的父目录(submodule_project在你的情况)必须在sys.path。有很多方法可以做到这一点:sys.path.append(),sys.path.insert(),PYTHONPATH环境变量。

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