【问题标题】:Specify 'pip' version in requirements.txt在 requirements.txt 中指定“pip”版本
【发布时间】:2017-01-26 22:49:14
【问题描述】:

我开发了一个 Python/Django 应用程序,它从一个虚拟环境(由virtualenv 创建)运行。

创建虚拟环境时,默认将pip的全局版本复制到新创建的环境中,这可能已经过时了(例如,Ubuntu 14.04上python-pip包中的1.5.4版本)。

为避免手动升级pip,将pip 版本固定在requirements.txt 文件中听起来是个好主意,例如添加以下行:

pip==8.1.2

指定pip 版本还允许通过更改需求文件中的行在所有托管应用程序环境(本地、开发、生产)中升级pip

这听起来像是一个好习惯吗?这种方法有什么问题吗?

【问题讨论】:

    标签: python pip virtualenv requirements.txt


    【解决方案1】:

    您遇到的问题是由 Ubuntu 14.04 提供的旧版 python-virtualenv 引起的。您应该删除 Ubuntu 软件包并通过 pip 安装:

    sudo pip install virtualenv
    

    然后确保您也安装了最新的 pip。

    sudo pip install -U pip
    

    您应该在新的虚拟环境中安装该版本。

    【讨论】:

    • 如果pip 是通过python-pip 安装的,sudo pip install -U pip 将不起作用。它会告诉你:Not uninstalling pip at /usr/lib/python2.7/dist-packages, owned by OS
    • 然后,通过apt-get卸载它,获取bootstrap.pypa.io/get-pip.pysudo python get-pip.pysudo python3 get-pip.py
    【解决方案2】:

    请注意requirements.txt 中列出的pip 版本将与其他要求一起安装。所以所有需求都将由旧版本的pip 安装,之后requirements.txt 中指定的版本将可用。

    我总是这样:

    virtualenv /path/to/my/desired/venv/
    source /path/to/my/desired/venv/bin/activate
    pip install -U pip
    pip install -r requirements.txt
    

    【讨论】:

    • 好点。看起来两者都做是有意义的,然后:在创建虚拟环境后立即安装现代 pip 版本,并在 requirements.txt 中指定它以用于文档/以后升级。
    • 我不会在 requirements.txt 中指定它——这首先是一个错误的要求。真的是您的软件无法使用较旧的 pip 正确安装吗?我真的不这么认为。
    • @ElmoVanKielmo 新要求文件格式,例如 ~= 不向后兼容,所以是的,在某些情况下,我们的软件无法使用旧 pip 正确安装
    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多