给每个 Python 项目一个独立环境:venv 入门实操
刚开始学 Python 时,很多人习惯把库直接安装到电脑的全局 Python 中。项目一多,就容易出现“这个程序能运行,另一个却报错”的情况。解决办法并不复杂:给每个项目准备一个自己的小环境。
一、虚拟环境有什么用?
可以把虚拟环境理解成项目专属的工具箱。项目 A 安装的库默认不会混进项目 B;删除项目环境,也不会顺带删除系统里的 Python。它适合练习、脚本开发和多人协作。
Python 自带 venv 模块,不必先安装额外工具。下面以项目目录 weather-demo 为例。
二、创建并启用环境
第一步:打开终端,进入项目目录。
mkdir weather-demo
cd weather-demo
如果目录已经存在,直接进入即可。
第二步:创建环境。
macOS 或 Linux 通常使用:
python3 -m venv .venv
Windows 可以使用:
py -m venv .venv
如果电脑没有 py 启动器,可尝试 python -m venv .venv。命令末尾的 .venv 是环境文件夹名称;用这个名字,编辑器也通常更容易识别它。
第三步:启用环境。
macOS / Linux(bash、zsh):
source .venv/bin/activate
Windows PowerShell:
.venv\Scripts\Activate.ps1
Windows 命令提示符(cmd):
.venv\Scripts\activate.bat
成功后,终端提示符前通常会出现 (.venv)。这表示当前终端已优先使用项目环境中的 Python。
若 PowerShell 提示脚本被禁止执行,可以改用 cmd,或直接调用环境里的 Python;不必为了一个项目随意放宽整台电脑的安全策略。
还有一个容易忽略的细节:创建环境和启用环境是两件事。创建只负责生成 .venv 文件夹;启用则是调整当前终端的命令搜索路径,让输入 python 时优先找到环境里的解释器。关闭终端后,通常需要在新终端里重新启用。
三、安装库并验证
启用环境后,用下面的命令安装一个常见的 HTTP 请求库:
python -m pip install requests
这里使用 python -m pip,能让 pip 跟随当前的 Python,减少“包装到了另一个 Python 里”的困扰。
新建 demo.py,写入:
import requestsresponse = requests.get("https://example.com", timeout=10)print(response.status_code)
运行:
python demo.py
如果网络连接正常,程序会输出网站返回的 HTTP 状态码。
也可以用下面的命令确认当前解释器的位置:
python -c "import sys; print(sys.executable)"
输出路径应指向项目里的 .venv。如果不是,先检查是否已启用环境,以及终端是否位于正确的项目目录。
如果想确认某个库是否装在当前环境,可以执行:
python -m pip show requests
查看当前环境安装了哪些包,则运行:
python -m pip list
遇到导入失败时,先检查解释器路径,再检查安装命令是否在启用环境后执行,往往比反复重装更有效。
在 VS Code 等编辑器中,也要把项目解释器切换到 .venv 内的 Python;否则终端里运行正常,点击编辑器的运行按钮却可能使用全局解释器。选择解释器时,认准项目目录下的 .venv 路径即可。
四、让项目方便交接
虚拟环境通常不应该上传到 Git,也不建议直接复制到另一台电脑。它包含本机路径和解释器文件,移动后可能无法正常工作。
更稳妥的做法是记录项目依赖。在启用环境、安装好所需库后执行:
python -m pip freeze > requirements.txt
把生成的 requirements.txt 和项目代码一起保存。别人取得项目后,在项目目录创建并启用新的 .venv,再执行:
python -m pip install -r requirements.txt
就能按清单安装依赖。
与此同时,在项目根目录的 .gitignore 文件中加入:
.venv/
__pycache__/
这样 Git 就不会把虚拟环境和常见缓存文件纳入版本管理。
五、用完后退出
完成工作后,在终端输入:
deactivate
终端提示符里的 (.venv) 会消失,当前会话便不再使用这个虚拟环境。下次继续开发时,重新进入项目目录并执行对应的启用命令即可。
小结: 记住“一个项目一个 .venv,先启用再安装,依赖写进 requirements.txt”,就能让 Python 项目更整洁,也更容易复现。
- 点赞
- 收藏
- 关注作者
评论(0)