Pycharm 从 Git 子模块导入

Ama*_*aar 5 python-import git-submodules pycharm

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

my-git-repo
    git-submodule-repo
        package1
           foo.py
           bar.py
    package2
        baz.py
    .gitmodules
Run Code Online (Sandbox Code Playgroud)

导入git-submodule-repo的结构如下:

foo.py:
from package1.bar import some_func
Run Code Online (Sandbox Code Playgroud)

但是,Pycharm 不承认这一点,并希望我改为拥有以下内容:

foo.py:
from git-submodule-repo.package1.bar import some_func
Run Code Online (Sandbox Code Playgroud)

这是有问题的,因为我不想更改所有导入git-submodule-repo(这似乎不是一个好的做法,而且不可扩展)并且其中git-submodule-repo有破折号,这对于导入来说不是有效的 Python 语法(我可以) t 重命名回购)。

我还需要一种从git-submodule-repo代码中导入的方法。像这样的东西:

baz.py:
from git-submodule-repo.package1.bar import some_func
Run Code Online (Sandbox Code Playgroud)

但当然没有破折号使其语法无效。这是内容.gitmodules以防万一它有用:

[submodule "git-submodule-repo"]
    path = git-submodule-repo
    url = https://github.com/SomeAccount/git-submodule-repo.git
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

小智 2

Soultion 1通过将子模块
文件夹标记为. 这种方法的缺点是它不允许您在没有 PyCharm 的情况下运行代码(例如从远程服务器上的终端),除非您使用PyCharm 远程解释器选项(仅适用于 PyCharm Professional)。Preferences -> Project -> Project Structure

解决方案 2
查看@Kevin 提出的关于从 git 子模块导入 python 文件的一般解决方案。您可以根据对项目根目录的兴趣创建到库的软链接。在您的情况下,命令将是:
$ ln -s git-submodule-repo.package1 package1
然后您将能够使用from package1.bar import some_funcfrom导入它foo.py
这种方法的缺点是它不是跨平台的,例如,如果您需要它,您将无法从 Windows 运行它。