setup.py 忽略完整的路径依赖项,而是在 pypi 中查找"best match"



类似于 https://stackoverflow.com/questions/12518499/pip-ignores-dependency-links-in-setup-py

我正在修改伪造器,以期待我与验证器一起打开的开放 PR,我希望能够测试我将拥有的新依赖项。

setup(
name='Faker',
...
install_requires=[
"python-dateutil>=2.4",
"six>=1.10",
"text-unidecode==1.2",
],
tests_require=[
"validators@https://github.com/kingbuzzman/validators/archive/0.13.0.tar.gz#egg=validators-0.13.0",  # TODO: this will change  # noqa
"ukpostcodeparser>=1.1.1",
...
],
...
)

python setup.py test拒绝安装 0.13.0 版本。

如果我将故障线移到install_requires=[..](不应该在那里)

setup(
name='Faker',
...
install_requires=[
"python-dateutil>=2.4",
"six>=1.10",
"text-unidecode==1.2",
"validators@https://github.com/kingbuzzman/validators/archive/0.13.0.tar.gz#egg=validators-0.13.0",  # TODO: this will change  # noqa
],
tests_require=[
"ukpostcodeparser>=1.1.1",
...
],
...
)
  • 使用pip install -e .一切正常 - 安装正确的版本。
  • 使用同样的问题python setup.py develop

我的猜测是setuptools/distutils做了一些奇怪的事情 -pip似乎解决了这个问题。我的问题:我该如何解决这个问题?

有问题的代码和参考可以在这里找到:

  • https://github.com/kingbuzzman/faker/commit/20f69082714fae2a60d356f4c63a061ce99a975e#diff-2eeaed663bd0d25b7e608891384b7298R72
  • https://github.com/kingbuzzman/faker
  • https://gist.github.com/kingbuzzman/e3f39ba217e2c14a9065fb14a502b63d
  • https://github.com/pypa/setuptools/issues/1758

查看手头问题的最简单方法:

docker run -it --rm python:3.7 bash -c "git clone https://github.com/kingbuzzman/faker.git; cd faker; pip install -e .; python setup.py test"

更新:由于此问题已修复,因此将不再复制该问题 - 所有测试都将通过

不幸的是,setup_requirestests_require都不支持 PEP 508 中基于 URL 的查找或环境标记。您需要使用dependency_links,例如

setup(
...
tests_require=["validators>=0.13.0"],
dependency_links=['git+https://github.com/kingbuzzman/validators@master#egg=validators-0.13.0'],
)

相关内容

  • 没有找到相关文章

最新更新