如何在virtualenv中默认将项目Python版本从2.7切换为3.5?
如何将virtualenv项目从Python 2.7切换到Python 3.5
嘿,我来帮你搞定这个版本切换的事儿!把基于virtualenv的Python2.7项目转到3.5其实不算复杂,但得留意依赖兼容性的坑,我给你准备了两种方案,你可以根据自己的情况选:
方案一:创建全新的Python3.5虚拟环境(强烈推荐)
这种方式最稳妥,能避免旧环境里的残留配置和依赖冲突:
- 先退出当前的Python2.7虚拟环境:
deactivate - 确认你的系统已经安装了Python3.5,在终端输入
python3.5 --version就能检查;如果没装,用你系统对应的包管理器安装就行(比如Ubuntu用apt,Mac用brew,Windows直接下载安装包) - 备份旧环境的依赖列表:回到项目根目录,运行
pip freeze > requirements.txt,把所有已安装的依赖都导出到这个文件里 - 创建新的Python3.5虚拟环境:
virtualenv -p python3.5 venv35(这里的venv35是新环境的名字,你可以改成自己喜欢的) - 激活新环境:
- Linux/macOS:
source venv35/bin/activate - Windows:
venv35\Scripts\activate
- Linux/macOS:
- 安装依赖:运行
pip install -r requirements.txt,这时候要注意——有些只支持Python2的包可能装不上,你得手动调整版本或者找支持Python3的替代包 - 测试项目:启动你的项目代码,逐个排查兼容性问题(比如print语句要加括号、编码处理差异、第三方库的API变化之类的)
方案二:修改现有虚拟环境(不推荐,风险较高)
如果你实在不想重新搭建环境,可以试试这个方法,但大概率会遇到各种奇怪的问题,做好心理准备:
- 先退出当前环境:
deactivate - 找到你的虚拟环境目录(比如原来叫
venv),进入venv/bin(Linux/macOS)或者venv\Scripts(Windows) - 删除原来和Python2.7相关的文件/链接:比如
python、python2、python2.7以及pip这些 - 创建指向Python3.5的链接:
- Linux/macOS:
ln -s /usr/bin/python3.5 python(注意替换成你系统里Python3.5的实际安装路径) - Windows:找到Python3.5的
python.exe,复制一份到虚拟环境的Scripts目录,改名为python.exe
- Linux/macOS:
- 重新安装pip:运行
python -m ensurepip,如果不行就手动下载get-pip.py脚本,用新的Python执行它 - 激活环境后,重新安装所有依赖并仔细测试项目,遇到问题就得逐一排查修复
额外提醒
- 一定要先在测试环境完成切换和验证,再动生产环境
- Python2和Python3有不少语法差异(比如字符串编码、迭代器返回值、异常处理写法),如果项目代码量大,可能需要用
2to3工具来辅助转换代码
内容的提问来源于stack exchange,提问作者ChrisBonheur
相关产品推荐
相关产品推荐

