从git子模块导入python文件而无需sys.path.append

时间:2019-02-20 10:51:22

标签: python python-3.x git

我有一个git项目('submodule_folder')克隆为我的git项目('my_project')中的子模块,具有以下文件结构:

my_project
    submodule_folder
        submodule_folder2
            __init__.py
            submodule_file.py
        file_to_import.py
    my_file1.py
    my_file2.py

我想从“ my_file1.py”导入“ file_to_import.py”,但是“ file_to_import.py”导入“ submodule_file.py”。

从“ my_file1.py”执行以下导入时,我得到了ModuleNotFoundError: No module named 'submodule_folder2'

from submodule_folder import file_to_import

使用Python3,有什么方法可以在不向我的每个文件中写入sys.path.append('submodule_folder/')的情况下进行此导入吗?我不希望修改“ submodule_folder”的内容。

1 个答案:

答案 0 :(得分:0)

如果file_to_import.py

from submodule_folder2 import submodule_file

它在Python 2中有效,因为在Py2中它是隐式相对导入。 Python 3禁用了此导入模式,它仅允许绝对导入或显式相对导入。要么

from submodule_folder.submodule_folder2 import submodule_file

from .submodule_folder2 import submodule_file