WSL2中激活Python虚拟环境后版本未切换的问题及解决
Python虚拟环境版本不匹配问题排查与解决
背景
在WSL2(Ubuntu 20.04)环境下,我在指定目录创建Python虚拟环境的过程如下:
- 通过
sudo update-alternatives --config python3将系统Python3版本切换为3.11 - 执行
python3 -m venv venv创建虚拟环境 - 重启WSL2后出现模块缺失错误,随后将系统Python切回Ubuntu 20.04默认的3.8版本
当前VS Code连接WSL2工作,虚拟环境目录venv/bin下包含以下文件:
pythonpython3python3.11pippip3
问题
执行source venv/bin/activate激活虚拟环境后(命令提示符已显示(venv)标识),执行python3 --version仍返回3.8.10,但创建虚拟环境时使用的是Python3.11。VS Code已将解释器设置为3.11,但进入Python控制台执行:
import sys sys.path
输出为:
['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload']
此外,虚拟环境中的pip无法正常工作,但将系统Python切回3.11时pip可正常使用(在3.8环境下执行pip安装会提示包已安装)。
解决方法
删除现有虚拟环境,按以下步骤重新创建:
- 执行
sudo update-alternatives --config python3将系统Python3切换为3.11 - 执行
python3 --version验证当前终端使用的是Python3.11 - 重新执行
python3 -m venv venv创建虚拟环境 - 激活新环境后再次执行
python3 --version验证版本
内容的提问来源于stack exchange,提问作者DanT29
相关产品推荐
相关产品推荐

