从pyenv切换至venv时,如何替代pyenv的Python版本管理功能?
从pyenv切换至venv时,如何替代pyenv的Python版本管理功能?
嘿,我刚好研究过这个问题!首先得掰扯清楚:venv本身只管创建和管理虚拟环境,它压根没自带Python版本的安装、多版本切换这类功能——这也是它和pyenv最核心的区别。不过如果铁了心要走纯原生官方路线,也能凑出一套替代方案,我给你唠唠:
安装不同Python版本:
官方没有跨平台的一键安装工具,得自己动手:直接去Python官网下载对应版本的安装包手动安装。注意安装时,Windows/macOS别乱勾“添加到系统PATH”,不然全局版本会打架;Linux的话可以用系统包管理器(比如apt、dnf)安装,装完一般会是python3.10、python3.11这种带版本号的可执行文件。查看已装的Python版本:
终端里敲命令就能看:- Linux/macOS:输入
ls /usr/bin/python*(查看系统级版本)或者ls ~/.local/bin/python*(查看用户自行安装的版本) - Windows:直接输入
where python,或者去当初的安装目录里手动查看
- Linux/macOS:输入
切换/使用特定版本:
没了pyenv global或者pyenv local那种一键切换的爽感,得直接指定版本号调用。比如想用Python3.10创建虚拟环境,就敲python3.10 -m venv 你的环境名;要运行脚本就用python3.10 你的脚本.py。而且venv创建的虚拟环境是和创建它的Python版本绑定的,激活环境后就自动用这个版本了,其实也能实现项目级的版本隔离,和pyenv local的效果差不多。卸载Python版本:
不同系统操作不一样:- Windows:去控制面板的“程序和功能”里找到对应版本,直接卸载就行
- macOS:如果是官网安装包装的,删掉
/Library/Frameworks/Python.framework/Versions/下对应版本的文件夹,再清掉/usr/local/bin里的相关软链接 - Linux:用包管理器卸载,比如
sudo apt remove python3.10
对了,之前也看到官方说venv是推荐的虚拟环境工具,确实能替代pyenv的虚拟环境管理部分,但版本安装和全局切换这块,原生方案确实没pyenv那么省心,得多费点手动操作的功夫。
备注:内容来源于stack exchange,提问作者Roofus




