Git子模块导入语句失败

3
我将一个仓库作为子模块添加到我的项目中,但是在编译我的项目时,该仓库内部的导入语句无法解析。我使用以下命令添加子模块: git submodule add <git-clone-link> 我在我的项目中创建了一个名为lib的文件夹,并在该文件夹下添加了子模块。 然而,在子模块内部,有些文件会从子模块的其他文件中进行导入。例如,假设子模块具有Python包P1和P2。P1有File_A,P2有File_B。 对于File_B导入File_A,导入语句如下: from P1 import File_A。此导入语句应该能正常工作,因为两个文件都在子模块下。 您认为为什么不起作用呢?

这不是提问的正确地方。你的问题完全与Python的导入机制有关,与子模块无关——子模块只是作为子目录出现,因此所有通常的Python通过路径名定位Python文件的问题都适用。 - torek
你在独立检出的代码库中尝试过相同的导入吗? - Will Barnwell
独立运行时的导入确实有效。 - aad
我遇到了这个问题,原因是由于子模块结构导致多出了一个文件夹。 - DrCord
1个回答

1
我能够通过在包含 git 子模块的父项目的顶级 __init__.py 文件中将 git 子模块文件夹添加到 Python 路径中来解决此问题。请注意保留 HTML 标签。
import os
import sys

# add git submodule to path to allow imports to work
submodule_name = 'submodule_123'
(parent_folder_path, current_dir) = os.path.split(os.path.dirname(__file__))
sys.path.append(os.path.join(parent_folder_path, submodule_name))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接