如何在 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.pathPYTHONPATH 以便 import utilssys.path 中找到它。