如何更新pyenv安装的pip版本?Python3.6.5环境问题咨询
解决pyenv创建Python 3.6.5环境时pip版本老旧的问题
嘿,我来帮你捋清楚这个问题——你遇到的麻烦其实不是pyenv的问题,而是Python版本本身的特性导致的。Python 3.6.5在官方发布的时候,捆绑的pip版本就是9.0.3,pyenv只是负责编译安装官方的Python源码包,所以不管你怎么更新pyenv、重新安装这个特定的Python版本,自带的pip都还是旧的。
那该怎么解决呢?给你几个实用的方案:
方案1:创建虚拟环境时自动更新pip
每次创建虚拟环境后立刻执行升级命令,你可以把这两个步骤合并成一行:
pyenv virtualenv 3.6.5 my-new-env && pyenv activate my-new-env && pip install --upgrade pip setuptools wheel
这样新环境一创建好,pip就自动升到兼容3.6.5的最新版本了(注意:Python 3.6已经停止维护,最新的pip可能不再支持它,所以会自动安装适配的最高版本)。
方案2:修改pyenv的安装钩子,让Python编译后自动升级pip
如果不想每次手动敲命令,你可以给pyenv加个钩子,让它在安装Python 3.6.5的时候自动升级pip:
- 找到pyenv的Python版本配置文件,路径大概是
~/.pyenv/plugins/python-build/share/python-build/3.6.5 - 打开这个文件,在末尾添加一行:
post_install "pip install --upgrade pip setuptools wheel"
保存后,重新用pyenv install 3.6.5安装这个版本,这次编译完成后,pip就会自动升级了。
方案3:批量更新已有的虚拟环境pip
如果你已经有一堆旧的虚拟环境,一个个手动更新太麻烦,可以用这个shell脚本批量处理:
#!/bin/bash # 遍历pyenv的所有版本目录 for env_dir in ~/.pyenv/versions/*/; do # 判断是不是虚拟环境(有activate脚本) if [ -f "${env_dir}bin/activate" ]; then echo "正在更新 ${env_dir} 中的pip..." # 激活环境、升级、退出 source "${env_dir}bin/activate" pip install --upgrade pip setuptools wheel deactivate fi done
把这段代码保存成update_pips.sh,给它加执行权限chmod +x update_pips.sh,然后运行就行。
总结一下:完全不用等pyenv更新,问题的根源是Python 3.6.5本身捆绑的pip版本,用上面的任意一种方法都能解决你的麻烦。
内容的提问来源于stack exchange,提问作者ulgens
相关产品推荐
相关产品推荐

