Python 环境总冲突?venv 虚拟环境与 pip 换源一次讲清
标题:《Python 环境总冲突?venv 虚拟环境与 pip 换源一次讲清》
刚学 Python 的人几乎都踩过同一个坑:在系统里 pip install 装了一堆包,A 项目要 requests 2.x,B 项目要 requests 3.x,升级一个另一个就报错;更糟的是系统自带的工具也依赖 Python,乱装包可能把系统工具一起搞坏。解决办法不是少装包,而是给每个项目一个独立的“小房间”:虚拟环境。
venv:每个项目一个独立环境
Python 3.3 起自带 venv,不用额外安装。在项目目录里执行:
python3 -m venv .venv
这会在当前目录生成一个 .venv 文件夹,里面是一套独立的 Python 解释器和 site-packages。激活它:
source .venv/bin/activate # Linux / macOS
.venv\Scripts\activate # Windows
激活后命令行前面会出现 (.venv) 前缀,此后 pip install 的包只装进这个环境,与系统 Python 和其他项目完全隔离。用完退出:
deactivate
一个好习惯:项目根目录放一个 requirements.txt,记下所有依赖和版本:
pip freeze > requirements.txt # 导出当前环境
pip install -r requirements.txt # 新环境一键还原
换台机器或者同事接手项目,先建 venv 再装 requirements.txt,环境一模一样,不再出现“在我机器上能跑”的尴尬。
pip 安装太慢?先换源
默认的 PyPI 源在国外,国内直连经常几 KB/s 甚至超时。换成国内镜像源,速度能从分钟级降到秒级。临时换源只需要在命令后加参数:
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
常用镜像还有阿里云 https://mirrors.aliyun.com/pypi/simple/、中科大、豆瓣等,选一个离你近的即可。如果每次都加 -i 太麻烦,改一次全局配置永久生效:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
配置写在 ~/.config/pip/pip.conf 里,想换回来随时改。注意镜像源只是同步官方仓库的副本,包本身是一样的,不用担心装到“山寨包”。
三个新手常踩的坑
第一,激活了虚拟环境却用 sudo pip install:sudo 会切到 root 环境,包就装到系统里去了,虚拟环境白建。虚拟环境里的包不需要 sudo,看到权限报错先检查是不是忘了激活。
第二,把 .venv 提交进 Git:虚拟环境文件夹动辄几百兆,而且和操作系统绑定,别人拿去也用不了。在 .gitignore 里加一行 .venv/,只提交代码和 requirements.txt。
第三,系统 Python 别动:Ubuntu、macOS 自带的 Python 是给系统工具用的,不要用它直接 pip install,也不要轻易升级它。自己的项目一律用 venv,或者用 python3 -m venv 指定版本;想管理多个 Python 版本再考虑 pyenv 这类工具,日常开发 venv 已经够用。
小结
Python 环境管理的核心就两条:项目隔离靠 venv,一个项目一个 .venv,依赖用 requirements.txt 固化;下载加速靠换源,一次配置长期受益。先把这两个习惯养成,再装任何包都不会互相打架,系统 Python 也能一直保持干净。
- 点赞
- 收藏
- 关注作者
评论(0)