我在 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/