【问题标题】:pip --editable gets overwritten regardless of the order无论顺序如何, pip --editable 都会被覆盖
【发布时间】:2018-09-22 06:41:22
【问题描述】:

我的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,但从 PyPI 安装了 some_dep 包。

--editable 似乎被requirements.txt 的内容忽略或覆盖。

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

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

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

我正在使用:

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

【问题讨论】:

    标签: python python-3.x testing dependencies pypi


    【解决方案1】:

    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 应该以不同的方式处理这个问题。

    【讨论】:

      猜你喜欢
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 2013-01-11
      • 2015-07-13
      • 2023-03-11
      • 1970-01-01
      • 2015-12-31
      相关资源
      最近更新 更多