Python 虚拟环境入门:用 venv 把每个项目隔离开

举报
yd_250779715 发表于 2026/10/28 18:28:49 2026/10/28
【摘要】 刚学 Python 的新手常常会遇到一个尴尬的问题:明明在自己的电脑上跑得好好的代码,换一台电脑或者交给别人运行,就报找不到模块,或者版本不对。很多时候问题不在代码本身,而在环境。不同项目对同一个库的要求可能完全不同,一个项目要用旧版本,另一个项目要用新版本,如果都装在同一个系统环境里,很容易互相干扰。Python 虚拟环境就是为了解决这个问题而生的:它给每个项目一个独立的小房间,包和版本互...

刚学 Python 的新手常常会遇到一个尴尬的问题:明明在自己的电脑上跑得好好的代码,换一台电脑或者交给别人运行,就报找不到模块,或者版本不对。很多时候问题不在代码本身,而在环境。不同项目对同一个库的要求可能完全不同,一个项目要用旧版本,另一个项目要用新版本,如果都装在同一个系统环境里,很容易互相干扰。Python 虚拟环境就是为了解决这个问题而生的:它给每个项目一个独立的小房间,包和版本互不影响。

一、虚拟环境到底是什么

可以把系统 Python 理解成一间公共仓库,所有项目都从这里拿东西。虚拟环境则是在项目旁边单独开辟的一间小仓库,里面有自己的一份 Python 解释器和包目录。激活虚拟环境后,你安装的包只会进入这个小仓库,不会污染系统环境;退出后,系统又恢复原样。这样做的好处很直接:项目之间互不打架,出了问题也更容易定位,删除环境重建的成本也很低。

二、创建你的第一个虚拟环境

Python 3 自带 venv 模块,不需要额外安装。先进入项目目录,再创建环境:

cd my-project
python -m venv .venv

在 Windows 上,命令里的 python 有时要写成 py,效果一样。创建完成后,项目目录下会出现一个 .venv 文件夹,里面就是这个环境的全部内容。第一次创建可能需要几秒钟,耐心等它完成,不要中途关闭终端。

三、激活与退出

创建好环境只是第一步,接下来要激活它,这样后续的 pip 和 python 命令才会在这个环境里生效。

在 Windows 的命令提示符或 PowerShell 里,激活命令一般是:

.venv\Scripts\activate

在 macOS 或 Linux 的终端里,则是:

source .venv/bin/activate

激活成功后,终端提示符前面通常会多出一个 (.venv) 标记,这就是最直观的判断方法。如果没有看到这个标记,说明还没有真正进入环境,这时安装的包很可能又装到了别处。做完工作后,输入 deactivate 就可以退出环境,提示符也会恢复正常。

四、在环境里装包和记录依赖

激活环境后,再用 pip 安装需要的包,例如:

pip install requests
pip list

这时 pip list 里看到的,就是当前环境里的包,而不是全系统的包。项目做完后,建议把依赖写进一个文件,方便别人复现:

pip freeze > requirements.txt

别人拿到项目后,只要创建并激活自己的虚拟环境,再执行 pip install -r requirements.txt,就能装上同一批依赖。版本尽量写清楚,不要只写包名不写版本,否则过几个月再装,版本变化可能带来意想不到的差异。

五、新手最容易踩的几个坑

第一,不要把虚拟环境文件夹提交到代码仓库。环境里文件很多,而且和操作系统有关,换一台电脑基本不能直接复用。正确的做法是把 .venv 写进 .gitignore,只提交代码和 requirements.txt。第二,不要随意移动或者改名已经创建好的环境文件夹,里面的路径是写死的,移动后很容易失效,删掉重建往往更快。第三,不要在系统 Python 里乱装包,更不要轻易升级系统自带的 Python,很多系统工具依赖它,改坏了会很麻烦。第四,养成先激活再装包的习惯,装包前先看一眼提示符有没有 (.venv)。

六、一个简单好用的工作流

我的建议是:一个项目对应一个虚拟环境,环境文件夹统一命名为 .venv,放在项目根目录。开始写代码之前,先激活环境;安装新包之后,及时更新 requirements.txt;项目结束或者要换电脑时,删掉 .venv 也不心疼,因为随时可以按依赖文件重建。刚开始可能会觉得多了一步,但这一步恰恰是区分随手写脚本和认真做项目的分界线。

虚拟环境本身并不复杂,难的是养成习惯。只要把创建、激活、装包、记录依赖这四步练熟,以后不管是做练习项目、接手别人的代码,还是部署到服务器,你都会少走很多弯路。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。