如何在virtualenv中升级Python至高于系统Python3.5的版本(≥3.7)
问题解答
不行,没法直接把基于Python3.5创建的virtualenv里的Python版本升级到3.7及以上。
原因
virtualenv是基于系统中已存在的Python版本构建的,虚拟环境里的Python执行文件要么是系统对应版本的软链接,要么是直接复制的二进制文件。它的依赖路径、pip工具都是和创建时的Python版本绑定的,强行替换Python版本会导致环境出现各种兼容性问题——比如pip无法正常工作、已安装的依赖包因Python版本不兼容报错、模块路径匹配失败等。
正确的解决步骤
- 先在系统上安装Python3.7及以上版本(可以通过系统包管理器、Python官网安装包,或者pyenv这类版本管理工具来安装)
- 用新安装的Python版本重新创建虚拟环境:
- 用virtualenv的话:
virtualenv -p /usr/bin/python3.7 my_project_env(路径换成你系统中Python3.7的实际位置) - 用Python3.3+自带的venv的话:
python3.7 -m venv my_project_env
- 用virtualenv的话:
- 激活新的虚拟环境,然后重新安装项目依赖:
- 如果之前导出过依赖列表,直接执行
pip install -r requirements.txt - 没导出的话,可以先激活旧环境,执行
pip freeze > requirements.txt把依赖列表导出,再到新环境安装
- 如果之前导出过依赖列表,直接执行
内容的提问来源于stack exchange,提问作者Neskelogth
相关产品推荐
相关产品推荐

