在 Ubuntu 上创建 Python 虚拟环境时,可能遇到两个典型问题。以下是解决步骤:
问题一:缺少 venv 依赖包
错误信息 :ensurepip is not available
解决方法:
# 安装 Python3.10 的 venv 包
sudo apt install python3.10-venv -y
# 注意:创建虚拟环境时不要用 sudo!
python3 -m venv myenv
问题二:DNS 解析失败
错误信息 :Temporary failure resolving 'cn.archive.ubuntu.com'
解决方法:
# 修复 DNS 配置(使用阿里云 DNS)
echo "nameserver 223.5.5.5" | sudo tee /etc/resolv.conf
echo "nameserver 223.6.6.6" | sudo tee -a /etc/resolv.conf
# 更新软件源并重新安装
sudo apt update -y
sudo apt install python3.10-venv -y
关键提示:
-
安装系统包用
sudo,创建虚拟环境不用sudo -
DNS 修改需使用
tee命令避免权限问题 -
国内环境建议使用阿里云 DNS 提高访问速度
验证环境是否创建成功:
source myenv/bin/activate
# 终端出现 (myenv) 前缀即为成功
简单两步,解决 Ubuntu Python 虚拟环境安装的常见问题。
二、再创建虚拟环境(注意:不用加 sudo!)
⚠️ 关键提醒:创建虚拟环境不要用 sudo(sudo 会把环境创建为 root 用户所有,后续使用会有权限问题),直接执行:
# 回到你要创建环境的目录(比如 zhishiku 目录)
cd /home/ubuntu/Documents/zhishiku/
# 无 sudo 创建虚拟环境
python3 -m venv myenv
这样就能成功创建名为 myenv 的虚拟环境,不会再报 ensurepip is not available 错误。
补充说明(避坑关键点)
-
为什么创建 venv 不能加 sudo?
- 用 sudo 创建的虚拟环境,文件夹所有者是 root 用户,后续你用普通用户激活环境、安装包时会报权限错误;
- 只有安装系统级依赖(如
python3.10-venv)时需要 sudo,创建 / 使用虚拟环境全程用普通用户。
-
验证是否创建成功:
# 查看是否生成 myenv 文件夹 ls -l | grep myenv # 激活环境测试 source myenv/bin/activate