【问题标题】:Keep order of installation in pip freeze在 pip freeze 中保持安装顺序
【发布时间】:2012-10-27 03:44:37
【问题描述】:

快速提问。

有没有办法确保pip freeze > requirements.txt 保持安装包的顺序?这对我来说是个问题,因为我在requirements.txt 中不断得到类似的东西:

matplotlib==1.1.1
numpy==1.6.2

所以当我尝试使用pip install -r requirements.txt安装时出现错误,因为numpy是matplotlib的依赖,所以我必须先手动安装numpy,然后重新运行pip install -r requirements.txt

有什么解决办法吗?

更新:为了响应 mechmind,我在 Ubuntu 12.04 中使用 pip 和 virtualenv --distribute myenv 安装了 matplotlib 和 numpy。安装后,我得到了这个冻结文件:

argparse==1.2.1
distribute==0.6.28
matplotlib==1.1.1
numpy==1.6.2
wsgiref==0.1.2

然后当我尝试在另一个虚拟环境中重新安装时,我收到以下错误:

REQUIRED DEPENDENCIES

                 numpy: no

                        * You must install numpy 1.4 or later to build

                        * matplotlib.

所以也许它取决于系统。

谢谢!

【问题讨论】:

    标签: python package pip


    【解决方案1】:

    刚刚尝试pipnumpymatplotlibpip 正确解决了依赖项检查-首先构建了numpy。 尝试使用 ubuntu 10.10 的旧股票点数。

    编辑:在玩过pipvirtualenv 之后,我意识到依赖关系检查实际上只有在发现依赖关系时才有效,即在安装、删除和再次安装包时。

    所以实际的解决方案将涉及requrements文件中包的重新排序(对于只有两个顺序错误的包的简单情况,您可以颠倒需求文件:sort -r | xargs pip install

    【讨论】:

    • 感谢您的回答。我做了另一个测试,但我得到了同样的错误。查看我的更新了解更多详情。
    • 用 virtualenv 试过,结果和你一样。可能pip 在某处缓存了已安装软件包的依赖项。所以,如果你只对这两个包有问题,我建议简单的解决方案 - 只需反转需求文件,即sort -r requrements.txt | xargs pip install
    • 聪明。我认为这应该可行,但在任何现实情况下,它都会产生另一个依赖问题。例如,就我而言,scipy 需要 numpy。
    • 所以,只有明确的重新排序才能为您提供帮助。
    • 嗯,当然,但这并不是一个好的解决方案,尤其是当其他包管理器解决依赖关系时。我期待 pip 也可以做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2017-11-05
    • 2016-03-02
    • 1970-01-01
    • 2015-09-21
    • 2017-06-28
    • 2012-02-11
    相关资源
    最近更新 更多