Python 环境管理技能简介
该技能用于 Python 环境管理,主题是虚拟环境、依赖管理与 Python 版本控制。资料中给出的工具包括 venv(内置)、Poetry、uv、pyenv、Pipenv 和 conda。
用途
当用户提出“创建虚拟环境”“设置 Poetry”“管理 Python……”等需求时使用。目标是帮助完成项目隔离环境搭建、依赖安装与锁定、Python 解释器版本切换等任务。
主要能力
venv(内置)
- 创建虚拟环境:python -m venv .venv 或 python3 -m venv .venv
- 激活:Linux/macOS 使用 source .venv/bin/activate,Windows 使用 .venv\Scripts\activate
- 退出:deactivate
- 安装包:pip install requests flask,以及 pip install -r requirements.txt
- 冻结依赖:pip freeze > requirements.txt
- 升级 pip:pip install --upgrade pip
requirements.txt 写法
- 生产环境固定版本:flask==3.0.0、requests==2.31.0、sqlalchemy==2.0.23
- 库开发使用范围:flask>=3.0,<4.0;requests~=2.31(兼容发布,>=2.31, <3.0)
- 带 extras:fastapi[all]==0.104.0
- 从 git 安装:git+https://github.com/user/repo.git@main#egg=package
- 分离开发依赖:pip install -r requirements.txt 与 pip install -r requirements-dev.txt
Poetry
- 安装:curl -sSL https://install.python-poetry.org | python3 -
- 新建项目:poetry new my-project;已有项目初始化:poetry init
- 添加依赖:poetry add requests flask;开发组:poetry add pytest --group dev;版本范围:poetry add "sqlalchemy>=2.0,<3.0"
- 移除依赖:poetry remove requests
- 安装依赖:poetry install、poetry install --without dev
- 更新依赖:poetry update、poetry update requests
- 查看依赖:poetry show、poetry show --tree
- 在虚拟环境中运行:poetry run python main.py、poetry run pytest
- 激活 shell:poetry shell
- 构建与发布:poetry build、poetry publish
- 导出 requirements.txt:poetry export -f requirements.txt --output requirements.txt、poetry export -f requirements.txt --without-hashes
- pyproject.toml 中可配置 [tool.poetry]、[tool.poetry.dependencies]、[tool.poetry.group.dev.dependencies]、[tool.poetry.scripts]
uv(快速 Python 包管理器)
- 安装:curl -LsSf https://astral.sh/uv/install.sh | sh
- 创建虚拟环境:uv venv
- 安装包:uv pip install requests flask、uv pip install -r requirements.txt;资料称比 pip 快 10-100 倍
- 从锁文件同步:uv pip sync requirements.txt
- 编译 requirements(解析并锁定):uv pip compile requirements.in -o requirements.txt
- 创建项目:uv init my-project
- 添加依赖:uv add requests、uv add pytest --dev
- 运行:uv run python main.py
pyenv(Python 版本管理)
- 安装:curl https://pyenv.run | bash
- 列出可用版本:pyenv install --list | grep "3."
- 安装版本:pyenv install 3.12.1、pyenv install 3.11.7
- 设置全局默认:pyenv global 3.12.1
- 设置目录级版本:pyenv local 3.11.7(生成 .python-version)
- 查看已安装:pyenv versions
- 卸载:pyenv uninstall 3.10.0
Pipenv
- 安装:pip install pipenv
- 创建环境并安装:pipenv install、pipenv install requests、pipenv install pytest --dev
- 在环境中运行:pipenv run python main.py、pipenv shell
- 锁定依赖:pipenv lock
- 从锁文件安装:pipenv install --deploy
- 查看依赖图:pipenv graph
conda
- 创建环境:conda create -n myenv python=3.12、conda create -n myenv python=3.12 numpy pandas
- 激活/退出:conda activate myenv、conda deactivate
- 安装包:conda install numpy pandas、conda install -c conda-forge package-name
- 列出环境:conda env list
- 导出环境:conda env export > environment.yml
- 从文件创建:conda env create -f environment.yml
- 删除环境:conda env remove -n myenv
常见问题
- 创建 venv 后“pip not found”:python -m pip install --upgrade pip
- 权限错误:pip install --user package-name
- 版本冲突:pip install --force-reinstall package==1.0
- 清理 pip 缓存:pip cache purge
- 查看过时包:pip list --outdated
- 验证安装:python -c "import package; print(package.version)"
参考资料
对比与迁移指南见 references/tools.md。
适用场景
适用于需要为 Python 项目建立隔离环境、锁定依赖版本、分离开发依赖、发布包或在不同 Python 版本间切换的开发工作。
限制
资料未提供各工具的收费、价格、平台支持范围、性能基准细节或安全注意事项;除 uv 的“比 pip 快 10-100 倍”外,未给出其它效果数据。