gpt4 book ai didi

python - 如何在 tox 中要求特定的软件包版本?

转载 作者:行者123 更新时间:2023-12-03 21:09:50 26 4
gpt4 key购买 nike

在我的 tox.ini文件,依赖项通过 requirements.txt 安装setup.py 也使用的文件, 如下:
requirements.txt文件包含可接受的范围 django包,取决于安装的python版本,如下:

Django>=1.11,<2 ; python_version == '2.7'
Django>=1.11,<3 ; python_version > '3'

对于 python3,我想确保测试在 django 2.0 上运行以及最新的 django 2.1+将默认安装,遵守 requirements.txt 中指定的版本限制文件。为此,我使用命令强制安装所需的 django 版本,如下所示:
[tox]
envlist = {py27,py3}-django111,py3-django{20,21}

[testenv]
deps =
-r{toxinidir}/requirements.txt

commands =
django111: pip install 'Django>=1.11,<1.12'
py3-django20: pip install 'Django>=2.0,<2.1'
py3-django21: pip install 'Django>=2.1'
pytest

理想情况下,我可以添加到 deps像这样的变量:
[testenv]
deps =
-r{toxinidir}/requirements.txt
django111: Django>=1.11,<1.12
py3-django20: Django>=2.0,<2.1
py3-django21: Django>=2.1

commands =
pytest

但是 pip是否 not support double requirements and will throw an error即使在指定版本约束的方式上没有冲突。

使用 commands 的缺点覆盖安装是它需要删除 django通过 requirements.txt 安装的软件包版本安装所需的。有没有办法避免那个额外的步骤?

最佳答案

一个技巧是将需求从 requirements.txt 移走。进入 setup.py - 松散固定的地方,以便您的所有 Django 版本都可用。例如

# setup.py
from setuptools import setup, find_packages

setup(
...
install_requires=[
"Django>=1.11,<2.1",
]
)
然后在 tox.ini 中使用您的第二个建议
[testenv]
deps =
-r{toxinidir}/requirements.txt
django111: Django>=1.11,<1.12
py3-django20: Django>=2.0,<2.1
py3-django21: Django>=2.1

commands =
pytest
... 只要 Django 要求未在 requirements.txt 中列出.
这是有效的,因为 pip install分为两部分,第一部分来自 tox:deps您在其中指定硬要求,第二个来自等效的 pip install -e .哪里 setup.py有更宽松的要求。

关于python - 如何在 tox 中要求特定的软件包版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54649374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com