如何在python中不使用任何修改来利用子模块?

时间:2018-02-12 06:25:51

标签: git python-3.x git-submodules

我应该制作两个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”中使用这个子模块?

1 个答案:

答案 0 :(得分:0)

在Python 3中,所有导入都是绝对的。 Module1必须执行绝对导入

import module1.utils

或明确相对导入:

import .utils

这是Module1中的一个错误,您应该修复它。

如果您仍然坚持使用有缺陷的模块,可以将Module1添加到sys.pathPYTHONPATH,以便import utilssys.path中找到它。