Python3: 在 setup.py 中安装基于 github 的模块?
Python3: install github-based module in setup.py?
安装 pip
,我可以编写以下 requirements.txt
文件:
git+https://repo@branch#egg=foo&subdirectory=this/bar/foo
numpy
并成功安装需求文件:
python3 -m pip install -r requirements.tx
但是,我在目录中放置了一个 setup.py
脚本,其中列出:
setuptools.setup(
...
install_requires = get_lines('requirements.txt'),
...
)
并且使用 pip
安装此子模块涉及 pip
运行 setup.py
...无法处理模块 link:
git+https://github.com/repo@branch#egg=foo&subdirectory=this/bar/foo
我可以看到 很多 解决这个问题的方法,但似乎应该有一种明确的方法来做到这一点,它在 setup.py
脚本。
有这样的方法吗?
您可能需要将 requirements.txt
中的行更改为:
foo @ git+https://repo@branch#egg=foo&subdirectory=this/bar/foo
参考文献:
- https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers
- https://www.python.org/dev/peps/pep-0440/#direct-references
虽然我不完全确定它会起作用。 requirements.txt
文件、直接 pip 和 setuptools 接受的符号之间可能存在细微差别。特别是我不知道像 egg
和 subdirectory
这样的东西支持得有多好。
建议:
- 从现在开始避免调用
python setup.py install
或 python setup.py develop
,并确保调用 python -m pip install .
或 python -m pip install --editable .
。
- 我确实考虑将
setup.py
中的 requirements.txt
视为危险信号(或至少是黄色)。 setuptools和requirements.txt
的install_requires
内容通常有不同的用途。
安装 pip
,我可以编写以下 requirements.txt
文件:
git+https://repo@branch#egg=foo&subdirectory=this/bar/foo
numpy
并成功安装需求文件:
python3 -m pip install -r requirements.tx
但是,我在目录中放置了一个 setup.py
脚本,其中列出:
setuptools.setup(
...
install_requires = get_lines('requirements.txt'),
...
)
并且使用 pip
安装此子模块涉及 pip
运行 setup.py
...无法处理模块 link:
git+https://github.com/repo@branch#egg=foo&subdirectory=this/bar/foo
我可以看到 很多 解决这个问题的方法,但似乎应该有一种明确的方法来做到这一点,它在 setup.py
脚本。
有这样的方法吗?
您可能需要将 requirements.txt
中的行更改为:
foo @ git+https://repo@branch#egg=foo&subdirectory=this/bar/foo
参考文献:
- https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers
- https://www.python.org/dev/peps/pep-0440/#direct-references
虽然我不完全确定它会起作用。 requirements.txt
文件、直接 pip 和 setuptools 接受的符号之间可能存在细微差别。特别是我不知道像 egg
和 subdirectory
这样的东西支持得有多好。
建议:
- 从现在开始避免调用
python setup.py install
或python setup.py develop
,并确保调用python -m pip install .
或python -m pip install --editable .
。 - 我确实考虑将
setup.py
中的requirements.txt
视为危险信号(或至少是黄色)。 setuptools和requirements.txt
的install_requires
内容通常有不同的用途。