Ubuntu 安装 Python 虚拟环境:常见问题与解决指南

在 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

关键提示:

  1. 安装系统包用 sudo,创建虚拟环境不用 sudo

  2. DNS 修改需使用 tee 命令避免权限问题

  3. 国内环境建议使用阿里云 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 错误。

补充说明(避坑关键点)

  1. 为什么创建 venv 不能加 sudo?

    • 用 sudo 创建的虚拟环境,文件夹所有者是 root 用户,后续你用普通用户激活环境、安装包时会报权限错误;
    • 只有安装系统级依赖(如 python3.10-venv)时需要 sudo,创建 / 使用虚拟环境全程用普通用户。
  2. 验证是否创建成功:

    复制代码
    # 查看是否生成 myenv 文件夹
    ls -l | grep myenv
    # 激活环境测试
    source myenv/bin/activate
相关推荐
“AI国潮设计-小江”3 分钟前
《Python+SDXL实战:用ControlNet精准控制“英歌舞戚风蛋糕”质感,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
supabc1236 分钟前
Celium:连接 Windows、Mac、Linux 与 Android,让远程访问和设备管理更简单
android·linux·windows·macos·远程访问·网络管理·celium
jayhgq10 分钟前
新一代Python包与项目管理工具——UV
开发语言·python·uv
for_ever_love__15 分钟前
文件与异常——open、json、with 与 try-except 的工程写法
python·异常处理·文件操作·大模型开发
XLYcmy17 分钟前
PDF 论文处理器 — 技术报告文档
数据库·python·网络安全·pdf·embedding·dify·rag
weixin_4404016918 分钟前
质朴的可视化绘图+pyecharts
开发语言·python·信息可视化·pyecharts
计算机毕业编程指导师23 分钟前
【Python毕设选题推荐】基于Spark的国内主要农作物产量趋势分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·python·数据分析·spark·毕业设计·课程设计·农作物产量
计算机毕业编程指导师29 分钟前
【Python毕设选题推荐】基于Spark的宫颈癌变光谱特征数据分析可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·宫颈癌变
ss27329 分钟前
AI全栈实战 | 3.3-01 Python OOP:__init__ 真的是构造函数吗,元类怎么让 Django Model 变魔法
开发语言·python·django
FYKJ_201031 分钟前
springboot心理健康管理系统86254-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计