Pycharm 从 Git 子模块导入

标签 pycharm python-import git-submodules

我在 Pycharm 中有一个 python 项目,其中有一个嵌套的 Git 子模块。这是文件夹结构:

my-git-repo
    git-submodule-repo
        package1
           foo.py
           bar.py
    package2
        baz.py
    .gitmodules
git-submodule-repo 中的进口结构如下:
foo.py:
from package1.bar import some_func

但是,Pycharm 不承认这一点,而是希望我拥有以下内容:
foo.py:
from git-submodule-repo.package1.bar import some_func

这是有问题的,因为我不想更改 git-submodule-repo 中的所有导入。 (看起来不是很好的做法并且不可扩展)和git-submodule-repo其中有破折号,这不是导入的有效 Python 语法(我无法重命名存储库)。

我还需要一种从 git-submodule-repo 导入的方法在我的代码中。像这样的东西:
baz.py:
from git-submodule-repo.package1.bar import some_func

但是当然没有破折号使其语法无效。这里是.gitmodules的内容如果它有用:
[submodule "git-submodule-repo"]
    path = git-submodule-repo
    url = https://github.com/SomeAccount/git-submodule-repo.git

任何帮助,将不胜感激!

最佳答案

灵魂 1
通过将子模块文件夹标记为 来使用 native PyCharm 支持来源 Preferences -> Project -> Project Structure .
这种方法的缺点是它不允许你在没有 PyCharm 的情况下运行你的代码(例如从远程服务器上的终端),除非你使用 PyCharm remote interpreter option。 (仅适用于 PyCharm Professional)。
解决方案二
查看 the solution @Kevin 提出了关于从 git 子模块导入 python 文件的一般性建议。您可以根据对项目根目录的兴趣创建指向 lib 的软链接(soft link)。在您的情况下,命令将是:$ ln -s git-submodule-repo.package1 package1然后你就可以用from package1.bar import some_func 导入它了。来自 foo.py .
这种方法的缺点是它不是跨平台的,例如如果需要,您将无法从 Windows 运行它。

关于Pycharm 从 Git 子模块导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62463328/

相关文章:

git - 使用 '--depth' 选项浅更新 git 子模块

python - 如何在不在 PyCharm 中重新加载包的情况下在 Python 控制台中进行调试?

python - numpy 已与 Anaconda 一起安装,但我收到 ImportError(DLL 加载失败 : The specified module could not be found)

python - 自定义 PyCharm 文档字符串 stub (即用于 google 文档字符串或 numpydoc 格式)

python - 何时使用 os.name、sys.platform 或 platform.system?

python - 属性错误 : module 'alembic.context' has no attribute 'config'

git - 在 Android Studio 中访问 git 子模块

python - Pycharm抛出: ModuleNotFoundError: No module named 'numpy' error even though Numpy is installed

python - 导入 Google 联系人库时出错?

git - 如何在github中获取子模块