我很难让git子模块工作。在
我有一个项目ProjectA
,它基本上是一个mainA.py
文件和一个包含库文件的子文件夹:
mainA.py
包含一个MainClass
,它基本上应该被调用,Libraries
只包含用于计算的脚本和类。在
ProjectA/
Libraries/
__init__.py
library1.py
library2.py
__init__.py
mainA.py
在mainA.py
中,我只是做一些类似的事情:
这很好,但是我现在有一个ProjectB
,它需要使用来自ProjectA
的{ProjectA
作为ProjectB
的git子模块
git submodule add ProjectA_git_url
ProjectB/
ProjectA/
mainB.py
.gitmodules
但是现在在mainB.py
我正试图从projectA
导入{
# content of mainB.py
from ProjectA.mainA import MainClass
ModuleNotFoundError: No module named 'Libraries'
我认为这是因为现在Libraries
不再挂在根目录上,而是挂在子模块ProjectA
内,所以当mainA.py
挂起时:
from Libraries.library1 import ClassA, ClassB
系统找不到Libraries
。
如果我将mainA.py
改为:
from ProjectA.Libraries.library1 import ClassA, ClassB
然后它就可以工作了,但是我当然不想在这里改变任何东西,ProjectA
,它只是一个项目,应该独立工作,或者作为另一个项目的子模块工作
我做错什么了?当ProjectA
是子模块时,有没有方法从mainA.py
导入{
git
是一个开发工具;您可以在开发期间使用它,但不能在部署期间使用它。pip
是一个部署工具;在开发期间,您可以使用它来安装必要的库;在部署期间,您的用户使用它来安装具有依赖关系的包。在当您需要在远程存储库中进行开发时,pip一起安装。在
也就是说,在您的例子中,您不应该将}导入。在
ProjectA
作为ProjectB
的子模块,而应该使ProjectA
成为Python依赖项。为ProjectA
和ProjectB
创建包,并分别安装它们,但允许ProjectB
从{依赖项在
setup.py
或requirements.txt
中声明。在也就是说,如果您坚持使用子模块:要么您自己操作
sys.path
,要么在mainA.py
中进行相对导入:相关问题 更多 >
编程相关推荐