【发布时间】:2021-01-01 15:52:47
【问题描述】:
我有一个 Python 库,我正在尝试为 PyPi 打包,其中包含几个指向外部存储库的 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必须进入其中) -
谢谢,这是我没有想到的一种解决方案。
-
那行得通吗?我应该将其转换为答案吗?
-
你也可以试试
find_namespace_packages()。__init__.py不那么挑剔,因此它可能适用于您的用例,但当然它也有副作用。
标签: pip setuptools setup.py pypi distutils