如何在 python 中不做任何修改地使用子模块?
how to utilize submodule without any modification in python?
我应该创建两个 git 存储库并将其中一个作为子模块。我不必修改子模块中的任何内容。但是,当我尝试在子模块中导入某些内容时,出现了一些路径问题。问题如下
模块 1(git 存储库)
布局
module
|
+--- __init__.py
+--- model.py
+--- utils.py
在model.py
import utils
# blah, blah
模块 2(git 存储库)
第二个模块使用model.py第一个模块
布局
module
|
+--- main.py
+--- submodule (Module 1 repository)
在main.py
import submodule.model
# blah, blah
<命令行>
~/module2$ python main.py
然后,崩溃了。
----> 1 import submodule.model
2
3 # blah, blah
~/module2/submodule/model.py in <module>()
----> 1 import utils
2
3 # blah, blah
ImportError: No module named 'utils'
要求“模块1”不得修改。
那么,如何在“模块2”中使用这个子模块呢?
在Python 3 中所有导入都是绝对的。 Module1 必须执行绝对导入
import module1.utils
或显式相对导入:
import .utils
这是模块 1 中的错误,您应该修复它。
如果您仍然坚持使用有问题的模块,您可以将 Module1 添加到 sys.path
或 PYTHONPATH
以便 import utils
在 sys.path
中找到它。
我应该创建两个 git 存储库并将其中一个作为子模块。我不必修改子模块中的任何内容。但是,当我尝试在子模块中导入某些内容时,出现了一些路径问题。问题如下
模块 1(git 存储库)
布局
module
|
+--- __init__.py
+--- model.py
+--- utils.py
在model.py
import utils
# blah, blah
模块 2(git 存储库)
第二个模块使用model.py第一个模块
布局
module
|
+--- main.py
+--- submodule (Module 1 repository)
在main.py
import submodule.model
# blah, blah
<命令行>
~/module2$ python main.py
然后,崩溃了。
----> 1 import submodule.model
2
3 # blah, blah
~/module2/submodule/model.py in <module>()
----> 1 import utils
2
3 # blah, blah
ImportError: No module named 'utils'
要求“模块1”不得修改。 那么,如何在“模块2”中使用这个子模块呢?
在Python 3 中所有导入都是绝对的。 Module1 必须执行绝对导入
import module1.utils
或显式相对导入:
import .utils
这是模块 1 中的错误,您应该修复它。
如果您仍然坚持使用有问题的模块,您可以将 Module1 添加到 sys.path
或 PYTHONPATH
以便 import utils
在 sys.path
中找到它。