如何解决Setuptools从git子模块安装代码
我正在尝试为PyPi打包一个Python库,其中包含几个指向外部存储库的git子模块。像这样:
MyLibrary
- setup.py
- MyLibrary
- __init__.py
- my_code1.py
- my_code2.py
- submodules
- __init__.py
- git submodule https://www.github.com/external/repository1
- repository1_code.py
- git submodule https://www.github.com/external/repository2
- repository2_code.py
我的setup.py
文件看起来像:
from setuptools import setup,find_packages
setup(
name='MyLibrary',...
packages=find_packages(),...,install_requires=["numpy","scipy"]
)
我遇到的问题是,当我使用pip安装此库时,我的所有代码和子文件夹都安装正确,但是缺少子模块;它们不会被初始化/插入,也不会出现在已安装的文件夹中,也不会出现在子模块文件夹或内部代码(例如repository1_code.py
)中。
在安装代码之前,有什么方法可以指示setup.py
扩展子模块,即git submodule update --init --recursive
吗?
解决方法
一个解决方案,要感谢该问题的顶部注释,是分叉所有子模块,并将__init__.py
放在所有需要的文件夹中。但这并不是最佳选择,因为我宁愿不必进行分叉和修改子模块,而是使用原始模块。
另一种解决方案不是使用find_packages()
,而是简单地显式写出子模块中的所有文件夹。这有点不方便,但效果很好,并且似乎是我到目前为止找到的最佳解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。