gpt4 book ai didi

python - pip --editable 无论顺序如何都会被覆盖

转载 作者:行者123 更新时间:2023-11-28 20:50:21 25 4
gpt4 key购买 nike

我的 tox.ini 文件中有以下内容:

...
[testenv]
usedevelop = True
deps =
--editable=file:///{toxinidir}/../some_dep
--requirement=requirements.txt
...

现在 requirements.txt 看起来像这样:

...
some_dep>=0.1.2

tox 创建一个 virtualenv 时,它说:

py3-env create: /Users/someuser/PycharmProjects/some_project/.tox/py3-env
py3-env installdeps: --requirement=requirements.txt, --editable=file:////Users/someuser/PycharmProjects/some_project/../some_dep

当然 /Users/someuser/PycharmProjects/some_project/../some_dep 存在。

现在的问题是,我希望找到一个指向 /Users/someuser/PycharmProjects/some_project/../some_depegg-link 而不是 some_dep 包从 PyPI 安装。

似乎 --editablerequirements.txt 的内容忽略或覆盖。

如果我从 requirements.txt 中删除 some_dep 我会得到一个预期的行为:egg-link 存在并且一切都按预期工作但我无法修改我的 requirements.txt,因为这会使我的部署复杂化。

如果我在我的 tox.ini 中更改 --editable--requirement 行的顺序没有任何变化:some_dep 仍然从 PyPI 安装。

这是预期的行为吗?我可以做些什么来让我的 --editable 参数得到尊重?

我正在使用:

来自/Users/mnowotka/PycharmProjects/ygo-public-apis/venv/lib/python3.6/site-packages (python 3.6) 的 pip 9.0.3

最佳答案

tox 连接您在 deps 中定义的内容并将其传递给 pip(作为一个命令执行),因此结果由 pip 控制。 pip 不保证在命令行上传递的安装顺序,所以这就是为什么它是这样的。

话虽如此:如果您在可编辑安装后安装定义更高版本包的 requirements.txt(实际版本应始终高于本地开发人员从源安装的开发版本)预计它会升级。如果您想确保安装了较低版本的本地包,您可以像这样在 tox 中进行安装:

[testenv]
deps =
# whatever you need where order does not matter
--requirement=requirements.txt
commands =
pip install --upgrade --editable={toxinidir}/../some_dep
# now do your actual testing ...
pytest tests/unit

deps 中定义的内容不遵循可预测的顺序(如上所述)。安装 deps 后执行的命令按顺序执行,可用于在执行实际测试之前修复/调整任何内容。

另见 this answer to a similar question .

旁注:有一些 discussion on the tox issue tracker如果 tox 应该以不同的方式处理这个问题。

关于python - pip --editable 无论顺序如何都会被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49790995/

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