如何在虚拟环境中使用指定Python3.x版本?解决Python3.8创建venv报错问题
报错核心原因
- 你遇到的创建Python3.8虚拟环境报错,是两个可直接定位的问题叠加导致的:
- Ubuntu 18.04 采用组件拆分的Python打包规则,通过apt源安装的Python3.8默认不会预装venv所需的
ensurepip依赖模块,对应组件被单独打包在python3.8-venv安装包中。你系统自带的Python3.6是发行版默认配套版本,已经提前安装了对应venv组件,因此之前创建3.6版本的虚拟环境不会触发报错。 - 创建虚拟环境完全不需要使用
sudo提权。你之前带sudo执行创建命令,很容易将虚拟环境目录创建在需要root权限操作的路径下(比如报错信息里出现的/myproject3根目录路径),不仅会造成后续的权限冲突,还会因为路径读写权限不足触发venv的ensurepip初始化失败。
- Ubuntu 18.04 采用组件拆分的Python打包规则,通过apt源安装的Python3.8默认不会预装venv所需的
分步解决操作
- 第一步:清理之前残留的无效虚拟环境目录
执行命令删除根目录、用户目录下残留的有问题的环境文件夹,避免权限冲突:sudo rm -rf /myproject3 ~/myproject3 - 第二步:安装Python3.8对应的venv依赖组件
直接通过apt源安装对应包即可补全缺失的ensurepip模块:sudo apt install python3.8-venv - 第三步:以普通用户身份创建虚拟环境(注意全程不要加sudo)
进入你希望存放项目的用户目录下,考虑到你当前shell的python3默认指向Anaconda对应的3.7版本,直接调用Python3.8的绝对路径创建环境,避免路径混淆:/usr/bin/python3.8 -m venv myproject3
此时创建的环境目录所有者是当前普通用户,不会出现权限相关的报错,环境内部的python3链接也会直接指向系统Python3.8的可执行文件,不会被Anaconda的PATH顺序影响。 - 第四步:激活环境验证效果
执行激活命令后检查python3的指向和版本:
此时输出的版本就会是你预期的Python3.8,和你之前创建Python3.6虚拟环境的使用逻辑完全一致。source myproject3/bin/activate python3 --version
特殊情况兜底
- 如果安装完
python3.8-venv后仍触发ensurepip报错,可以在创建环境时跳过默认的pip初始化流程:
执行命令创建无预装pip的环境:python3.8 -m venv myproject3 --without-pip
激活环境后,手动通过系统自带的pip安装流程给环境配置独立的pip组件即可。
内容的提问来源于stack exchange,提问作者Sanketh B. K
相关产品推荐
相关产品推荐

