导入缺少__init__的子模块

时间:2016-03-12 11:07:01

标签: python git python-2.7

我使用以下命令将现有项目作为子模块添加到我的项目中。

git submodule add https://github.com/...

但是,子模块根目录不包含__init__.py文件。是否可以从该子模块导入功能而无需对其进行更改?

.gitmodules的内容:

[submodule "name"]
path = name
url = https://github.com/name

2 个答案:

答案 0 :(得分:1)

我认为解决方案是将子模块添加到项目中,然后将符号链接添加到子模块旁边的实际包中(或者放置它的位置)

所以你有

project
  - submodule
    - package
    - setup.py
  - my_awesome_script.py
  - package (symbolic link to submodule/package)

然后你可以通过符号链接导入它。

import package

package.work_your_magic()

来源:https://stackoverflow.com/a/15676423/5784822

答案 1 :(得分:-1)

您只需抓取子模块的内容:

git submodule init
git submodule update

这会将子模块的所有内容签出到子模块文件夹下的工作目录中。

  

但是,子模块根目录不包含 init .py文件。是否可以从该子模块导入功能而无需对其进行更改?

是的

在这种情况下,您必须使用subtree而不是子模块。子树和子模块之间的主要区别在于子树内容是在根级别进行管理的,因此您可以使用checkout命令检查项目中任何路径中的任何内容,而在子模块中则不能,并且您需要复制它。