下面我为你提供一个终极指南,涵盖从系统准备到项目环境创建的全过程。我们将采用业界最佳实践,彻底解决你之前遇到的所有问题。
本指南分为两部分:
- 标准方法 (推荐给90%的用户):使用系统自带的Python +
venv
模块,为每个项目创建隔离环境。 - 进阶方法 (专业开发者首选):使用
pyenv
管理多个Python版本 +venv
创建项目环境。
准备工作:加固你的Ubuntu系统
无论你选择哪种方法,第一步都是确保你的系统“地基”稳固。
-
更新系统包列表:
sudo apt update sudo apt upgrade
-
安装Python构建依赖:
很多Python包(尤其是在科学计算领域)在安装时需要从源码编译。如果缺少编译工具和依赖库,pip install
就会失败。一次性装好,永绝后患。sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
-
安装
venv
模块(你之前遇到的问题就在这里):
确保你的Python拥有创建虚拟环境的能力。sudo apt install python3-venv
好了,地基打好。现在可以选择你的开发模式了。
标准方法:使用 venv
为每个项目创建独立环境
这是Python官方推荐的、最直接、最可靠的方法。
核心思想:不碰系统全局的Python。把家(项目)安在Linux自己的文件系统里,每个家都配一个独立的、干净的房间(虚拟环境)。
步骤1:创建项目大本营
黄金法则:永远在Linux文件系统(如 /home/szh/
)里做开发,而不是在Windows挂载盘(/mnt/d/
)上。
# 回到你的Linux主目录
cd ~
# 创建一个专门放所有项目的文件夹,比如叫 "projects"
mkdir projects
cd projects
# 为你的新项目创建一个文件夹
mkdir my_transformer_project
cd my_transformer_project
现在你的工作目录是 ~/projects/my_transformer_project
,这是一个完美的起点。
步骤2:创建虚拟环境
在这个项目文件夹里,创建一个名为 venv
的虚拟环境。
# 使用 python3 的 venv 模块,创建一个名为 "venv" 的文件夹
python3 -m venv venv
执行后,你会看到一个 venv
文件夹,里面包含了该项目专用的Python解释器和初始库。
步骤3:激活虚拟环境
“进入”这个隔离的环境。
source venv/bin/activate
激活成功后,你的命令行提示符会变成这样:
(venv) szh@DESKTOP-D76IECJ:~/projects/my_transformer_project$
前面的 (venv)
表示你现在处于激活状态。
步骤4:在虚拟环境中安装包
现在,你可以随心所欲地使用 pip
了。所有安装都只会进入 venv
这个小房间,不会污染任何其他地方。
# (推荐) 先升级一下pip
pip install --upgrade pip
# 安装你需要的包
pip install torch torchvision torchaudio
pip install numpy pandas matplotlib
# 查看当前环境里安装了哪些包
pip list
步骤5:开始工作
把你的 .py
代码文件放在 ~/projects/my_transformer_project
目录下,然后直接运行。
python your_code.py
步骤6:退出虚拟环境
工作完成后,使用 deactivate
命令退出。
deactivate
提示符会恢复原样。下次要继续工作时,只需 cd
到项目目录,再次 source venv/bin/activate
即可。
进阶方法:使用 pyenv
+ venv
适用场景:
- 项目A需要Python 3.9,项目B需要Python 3.10,而系统自带的是Python 3.12。
- 你想自由切换全局和项目的Python版本,不受系统限制。
核心思想:pyenv
负责管理和切换不同版本的Python解释器本身,venv
仍然负责为项目创建基于特定版本Python的隔离环境。
步骤1:安装 pyenv
pyenv
官方推荐使用脚本一键安装。
curl https://pyenv.run | bash
步骤2:配置环境变量
安装完成后,脚本会提示你将几行代码添加到你的shell配置文件(通常是 ~/.bashrc
)中。这是为了让 pyenv
命令能被系统识别。
# 将这几行追加到 ~/.bashrc 文件末尾
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# 立即应用这些改动,或者直接重启终端
exec "$SHELL"
步骤3:使用 pyenv
安装你需要的Python版本
比如,你想安装Python 3.10.13。
# 查看所有可安装的版本
pyenv install --list
# 安装指定版本 (这一步会编译Python,可能需要几分钟)
pyenv install 3.10.13
步骤4:结合 pyenv
和 venv
创建项目环境
这是最酷的部分。
# 还是先创建项目目录
cd ~/projects
mkdir another_project
cd another_project
# 使用 pyenv 为这个项目目录指定Python版本
pyenv local 3.10.13
# 现在,查看python版本,你会发现它已经是3.10.13了!
python --version
# Python 3.10.13
# 在这个由pyenv设定的版本基础上,创建虚拟环境
python -m venv venv
# 激活并使用(和标准方法完全一样)
source venv/bin/activate
pip install ...
总结与推荐
特性 | 标准方法 (venv ) | 进阶方法 (pyenv + venv ) |
---|---|---|
功能 | 创建项目隔离环境 | 管理Python版本 + 创建项目隔离环境 |
适用场景 | 大多数个人项目,不要求特定Python版本 | 需要在多个Python版本间切换的复杂项目或团队协作 |
复杂度 | 简单,Python内置 | 稍复杂,需要额外安装和配置 |
核心命令 | python3 -m venv venv | pyenv install <version> & pyenv local <version> |
给你的建议:
从“标准方法”开始。 它能解决你90%的需求,并且能让你养成项目隔离的好习惯。当你未来遇到一个明确需要特定旧版Python才能运行的项目时,再来学习和部署“进阶方法”也完全来得及。