我在项目中添加了一个git子模块。现在该子模块中的所有导入都被破坏了,因为我必须使用导入的完整路径。 例如,如果结构是这样的:
MYPROJECT:
- submodule_project:
- package1:
--- code1.py
- package2:
--- code2.py
现在,在code1.py中有from package2 import code2
。它告诉我package2是未解析的引用。只有在我将其更改为from submodule_project.package2 import code2
时才会解决
我不想要这个,因为我不想更改子模块中的任何内容。我刚刚添加它以在我的项目中使用它的一些软件包,并在开发人员更新它时定期更新。
答案 0 :(得分:0)
如果您希望package2
成为顶级可导入包,则其父目录(在您的情况下为submodule_project
)必须位于sys.path
。有很多方法可以做到:sys.path.append()
,sys.path.insert()
,PYTHONPATH
环境变量。
或者您可能根本不想将代码作为子模块。如果子模块中的代码使用绝对导入而不是相对(from ..package2 import code2
),则拥有子模块没有意义。可能是软件包应安装在site-packages
(全局或虚拟环境)中,但不作为子模块附加到项目中。