You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Python虚拟环境PIP版本低于创建版本的原因、解决及Python2.7适配疑问

Python 2.7 虚拟环境中 Pip 版本偏低的问题解析与解决方案

先给你把这个问题的来龙去脉说透,再给你无副作用的解决办法——毕竟Python 2.7已经停更挺久了,得适配它的特殊情况。

为什么会出现版本差异?

MacOS自带的Python 2.7是个非常老旧的版本(苹果为兼容旧软件一直保留着),对应的pip版本也极低。当你用virtualenv创建虚拟环境时,它的默认逻辑是直接复制系统基础Python环境里的pip到虚拟环境中,而不是自动下载最新版的pip。这就导致虚拟环境里的pip版本,和你后来全局升级过的pip版本不一致——毕竟全局升级的pip是针对系统Python的,但virtualenv创建时只认当时系统Python里的旧pip。

另外要注意:Python 2.7在2020年就停止了官方维护,pip的最后一个兼容版本是20.3.4,之后的pip版本都不再支持Python 2.7,所以你也没法升级到更高版本了。

无副作用的解决方案与避免方法

1. 修复现有虚拟环境的pip版本

如果你已经创建了虚拟环境,只需激活它并升级pip到兼容的最高版本即可——所有操作都在虚拟环境内部,完全不会影响系统全局的Python和pip:

  • 激活虚拟环境:source your_env_name/bin/activate
  • 升级pip到20.3.4:pip install --upgrade pip==20.3.4
  • 验证版本:pip --version,此时应该显示20.3.4

2. 从根源避免问题(创建环境时直接搞定)

为了每次创建虚拟环境都不用手动升级,可以把步骤自动化,或者提前配置好全局环境:

方法一:用脚本自动化创建与升级

写一个简单的bash脚本(比如create_py27_env.sh),一键完成虚拟环境创建+pip升级:

#!/bin/bash
# 用法:./create_py27_env.sh 你的环境名称
if [ -z "$1" ]; then
    echo "请指定虚拟环境名称,比如:./create_py27_env.sh my_py27_project"
    exit 1
fi
env_name=$1
# 创建虚拟环境
virtualenv $env_name
# 激活并升级pip
source $env_name/bin/activate
pip install --upgrade pip==20.3.4
echo "虚拟环境 $env_name 创建完成,pip已升级到20.3.4"
deactivate

给脚本加执行权限:chmod +x create_py27_env.sh,之后运行./create_py27_env.sh my_env就能直接得到pip版本正常的虚拟环境。

方法二:先确保全局Python2.7的pip是最新兼容版

如果你希望virtualenv创建时直接复制最新的pip,可以先把系统Python2.7的pip升级到20.3.4(用--user参数避免修改系统自带文件,无副作用):

  • 升级全局pip2.7:pip2.7 install --user --upgrade pip==20.3.4
  • 之后再创建虚拟环境:virtualenv my_env,此时虚拟环境里的pip就是20.3.4版本了

关键注意事项

  • 永远不要用sudo去升级Python2.7的pip,否则可能破坏MacOS系统自带的依赖(很多系统工具还依赖自带的Python2.7)。
  • 因为Python2.7已停更,不要尝试升级pip到20.3.4以上版本,否则会出现兼容性错误。

内容的提问来源于stack exchange,提问作者Brian Barcelona

火山引擎 最新活动