python 虚拟环境管理
参考文献
虚拟环境:你肯定用过,但不一定了解.hucci
从pip到uv:一口气梳理现代Python项目管理全流程!
【uv】Python迄今最好的项目管理+环境管理工具(吧?)
uv 官方文档 及翻译后的镜像站 镜像站
GPT-5
DeepSeek-V3.1
在开发不同 python 项目时,所用到的 python 版本、package 都有可能不同
在命令行直接使用
python main.py
,使用是全局环境
在相同环境下开发不同项目,不仅会污染全局环境,还可能因为缺失 module
、版本冲突导致程序运行失败。这时,为不同的项目单独设立一个虚拟环境可以解决这些问题
虚拟环境
虚拟环境:你肯定用过,但不一定了解.hucci 认为虚拟环境包含三个主要内容——python 解释器、激活脚本、第三方包
(在 windows 环境中)先使用 python 的内置模块 venv
(python 3.3+ 自带)在当前的根目录创建一个虚拟环境
python -m venv hello_env
执行后,会在根目录生成一个名为 hello_env
的文件夹。推荐取名为 .venv
,因为当前主流编辑器都会自动识别该目录为虚拟环境。该文件夹下有四个文件(夹)
// windows 环境
Include
Lib
Scripts // 该目录下的 activate 为激活脚本
pyvenv.cfg
使用如下指令启动激活脚本,动态修改当前终端会话的环境变量,使系统优先使用虚拟环境中的 Python 解释器和第三方包。这时命令提示符前会出现虚拟环境的名称 hgello_env
PS D:\code\venv> hello_env\Scripts\activate
(hello_env) PS D:\code\venv>
第三方包则存放在 .\lib\site-packages
下,这时使用 pip install
引入的包也存放在该目录下
venv
和pip
的关系
venv 负责环境隔离
pip 负责包管理,在当前激活的环境中安装、卸载、升级 Python 包
常见环境管理工具
venv:python 官方提供的环境管理工具。venv 即 virtual environment 的简写
conda:第三方工具,配置文件、软件仓库均与 python 官方不同。且除 python 外,conda 还支持 C++、rust 等其他语言,是一个跨平台的包管理工具和环境管理工具
全局环境使用规范
GPT-5 认为,对于全局环境,有一些最佳实践和使用规范:
- 避免直接使用全局环境运行项目
- 保持全局环境简洁,只安装一些工具包(例如,
pip
,pytest
,black
等开发工具) - 更新全局环境中的 Python 和工具
依赖管理
创建虚拟环境后,我们也需要把这些配置分享给其他开发者。这就是依赖管理的任务所在
pip freeze
早期,通常使用 pip freeze
命令来输出当前环境(如下为 hello_env
环境)下的依赖
(hello_env) PS D:\code\venv> pip freeze
numpy==2.3.3
pandas==2.3.2
python-dateutil==2.9.0.post0
pytz==2025.2
six==1.17.0
tzdata==2025.2
通常使用 pip freeze > requirements.txt
重定向输出为 requirements.txt
。这样,别的开发者只需要 pip install -r requirements.txt
就可以一键安装
pyproject.toml
pip freeze
方法存在问题,它无法分别直接依赖和间接依赖。在卸载时不会同时卸载间接依赖,这样会留下一堆无用的孤儿依赖
包存在直接依赖和间接依赖的关系。如
pandas
是用户pip install pandas
直接引入的,而pytz
是pandas
的依赖,所以被自动安装
为了解决间接依赖问题,python 官方提出了统一的规范 pyproject.toml
文件。它允许开发者只记录直接依赖即可
[project]
name = "proj"
version = "0.1.0"
dependencies = ["numpy==2.3.3","pandas==2.3.2"
]
python 官方并没有提供自动化工具来管理 pyproject.toml
,也就是说 pyproject.toml
需要开发者手动填入直接依赖。不过社区提供了多种解决方案,如 poetry、uv、PDM
后面介绍 uv 的用法
uv
uv 是 Python 项目管理工具和环境管理工具,不仅提供了虚拟环境和包的管理功能,还可以快速搭建 python 项目的文件结构
安装 uv
官方文档指出,可以通过 powershell 命令一键安装 uv
PS D:\code\venv> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Downloading uv 0.8.22 (x86_64-pc-windows-msvc)
Installing to C:\Users\UnGoose\.local\binuv.exeuvx.exeuvw.exe
everything's installed!To add C:\Users\UnGoose\.local\bin to your PATH, either restart your shell or run:set Path=C:\Users\UnGoose\.local\bin;%Path% (cmd)$env:Path = "C:\Users\UnGoose\.local\bin;$env:Path" (powershell)
它会自动安装并修改环境变量 PATH
创建项目
一般来说,创建项目同时需要新建 git 仓库、README.md,uv
提供 init
方法,可以快速创建并初始化一个项目
PS D:\code> uv init hello_uv
Initialized project `hello-uv` at `D:\code\hello_uv`
PS D:\code> cd hello_uv
PS D:\code\hello_uv> dir目录: D:\code\hello_uv
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2025/9/25 17:37 109 .gitignore
-a---- 2025/9/25 17:37 5 .python-version
-a---- 2025/9/25 17:37 86 main.py
-a---- 2025/9/25 17:37 154 pyproject.toml
-a---- 2025/9/25 17:37 0 README.md
创建虚拟环境并激活
PS D:\code\hello_uv> uv venv .venv
Using CPython 3.11.7 interpreter at: C:\Users\UnGoose\anaconda3\python3.exe
Creating virtual environment at: .venv
Activate with: .venv\Scripts\activate
PS D:\code\hello_uv>.venv\Scripts\activate
(.venv) PS D:\code\hello_uv>
包管理
使用 uv
安装第三方库,同时自动把依赖写入 pyproject.toml
uv add requests
需要分享虚拟环境时,也只需要 pyproject.toml
uv sync
以上命令会根据 pyproject.toml
自动创建虚拟环境,方便快捷
运行
运行程序时,uv 也不在需要先激活虚拟环境,uv run
会自行匹配
uv run main.py
直接用
python main.py
运行的是当前命令行上下文里的 python,如果激活虚拟环境则运行虚拟环境的 python.exe
uv run main.py
会自动挑选并加载合适的项目环境
临时运行脚本
当你需要临时运行一个带有第三方库的 python 脚本时,uv
也提供了解决方案
uv init --script main.py
uv run main.py
uv init --script
会识别 main.py
中的依赖,并在文件开头添加特定的字段。uv run
可以识别这些字段,临时安装第三方库执行
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/917724.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!