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

参考文献:

虽然我不完全确定它会起作用。 requirements.txt 文件、直接 pipsetuptools 接受的符号之间可能存在细微差别。特别是我不知道像 eggsubdirectory 这样的东西支持得有多好。

建议:

  • 从现在开始避免调用 python setup.py installpython setup.py develop,并确保调用 python -m pip install .python -m pip install --editable .
  • 我确实考虑将 setup.py 中的 requirements.txt 视为危险信号(或至少是黄色)。 setuptoolsrequirements.txtinstall_requires内容通常有不同的用途。