pip & UV & Conda
pip 命令
pip install -r requirements.txt ## 从 requirements.txt 安装所有依赖
pip install <package> ## 安装默认版本的包
pip install <package>==<version> ## 安装特定版本的包
pip install --upgrade <package> ## 安装包的最新版本
pip install ./dist/local_package.whl ## 安装本地目录中的包
pip install git+https://github.com/user/repo.git ## 从 Git 仓库安装包
pip install --proxy http://host:port <package> ## 使用代理安装包
pip uninstall <package> ## 卸载指定的包
pip download <package> ## 下载指定的包,而不安装它
pip list ## 查看已安装的包
pip show <package> ## 显示指定包的详细信息
pip freeze > requirements.txt ## 导出已安装包的列表到 requirements.txt
pip completion --zsh ## 指定 [bash, zsh, powershell] 输出 pip 命令启用自动补全函数
pip search <keyword> ## 查找可用的包(已弃用)
pip cache purge ## 清除 pip 的缓存文件
pip --version ## 查看 pip 的版本
pip hash <file> ## 计算和显示包文件的哈希值
pip help ## 查看帮助信息
pip config list ## 查看所有配置项的当前值 [--global 全局 --user 用户级 --site 项目/站点级]
pip config set user.timeout 60 ## 用户级配置超时时间 60 s
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ ## 全局配置镜像源为阿里云镜像
pip config get global.index-url ## 获取全局配置镜像源值
pip config unset global.index-url ## 取消全局配置镜像源
pip config edit --user ## 编辑用户级配置
uv 命令
uv venv ## 在当前目录创建一个 .venv 虚拟环境
uv venv --python 3.12 ## 创建指定 python 版本的虚拟环境
uv python list ## 查看可用的 python 版本
uv python find ## 查找已安装的 Python 版本
uv python pin 3.11 ## 在当前目录中使用特定的 Python 版本
uv python install ## 安装最新的 python 版本
uv python install 3.12 ## 安装特定 python 版本
uv python uninstall ## 卸载一个 Python 版本
uv python dir ## 显示 uv 安装的 Python 版本路径
uv python install --default --preview 3.12.10 ## 将 uv 管理的 Python 添加到系统环境变量
uv run ## 运行脚本
uv run --python 3.10 example.py ## 脚本调用时请求任意 Python 版本
uv remove 'requests==2.31.0' ## 脚本中删除依赖项
uv add 'requests==2.31.0' ## 向脚本添加依赖项
uv add -r requirements.txt ## 将 requirements.txt 中的依赖项全部加入项目配置 pyproject.toml
uv pip install <package> ## 在当前虚拟环境中安装包
uv pip install -r requirements.txt ## 从 requirements.txt 中安装依赖
uv pip install --upgrade <package> ## 升级已安装的包到最新版本
uv pip uninstall <package> ## 卸载指定的包
uv pip list ## 查看已安装的包列表
uv pip show <package> ## 查看指定包的详细信息
uv pip freeze ## 列出已安装的软件包及其版本
uv pip compile ## 将需求 requirements 编译成锁文件
uv pip sync ## 使用锁文件同步环境
uv pip tree ## 查看环境的依赖树
uvx / uv tool run ## 在临时环境中运行工具
uv tool install ## 在用户范围内安装工具
uv tool uninstall ## 卸载工具
uv tool upgrade ## 升级工具
uv tool list ## 列出已安装的工具
uv tool update-shell ## 更新 shell 以包含工具可执行文件
uv tool dir ## 显示 uv 工具目录路径
uv cache clean ## 清理 uv 的缓存
uv cache prune ## 删除过时的缓存条目
uv cache dir ## 显示 uv 的缓存目录
uv init ## 创建一个新的 Python 项目
uv self update ## 独立安装版本自升级
uv sync ## 将项目的依赖项与环境同步
uv lock ## 为项目的依赖项创建一个锁文件
uv tree ## 查看项目的依赖树
uv build ## 将项目构建到分发档案中
uv publish ## 将项目发布到包索引
uv help init ## 查看特定命令的长帮助菜单
uv version ## 查看版本
conda 命令
conda create -n <env_name> ## 创建新的虚拟环境[-n: --name]
conda create -n <env_name> python=<version> ## 指定 Python 版本并创建新的虚拟环境
conda activate <env_name> ## 激活指定的环境
conda deactivate ## 退出当前激活的环境
conda env list ## 列出所有的 conda 环境
conda env remove -n <env_name> ## 删除指定的环境
conda rename -n <old_env_name> <new_env_name> ## 重命名虚拟环境名
conda list ## 列出当前环境中的所有包
conda update / upgrade conda ## 更新 conda 工具本身
conda update / upgrade <package> ## 更新指定包
conda install <package> ## 安装指定包
conda install <package>=<version> ## 安装指定版本的包
conda install <package> -c https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ ## 临时使用镜像源安装包
conda remove / uninstall <package> ## 卸载指定包
conda search <package> ## 在包仓库中搜索指定包
conda env export > environment.yml ## 导出当前环境为 yml 文件
conda env create -f environment.yml ## 从 yml 文件创建环境
conda run -n <env_name> <command> ## 在指定环境中运行某个命令
conda clean --all ## 清理所有包缓存、未使用的包和临时文件
conda init <shell_name> ## 初始化 conda,支持 bash、zsh、fish 等 shell
conda config --show ## 显示当前的配置设置
conda config --add channels <channel_name> ## 添加包仓库源
conda config --set auto_activate_base false ## 禁用 base 环境的自动激活
conda info ## 显示当前 conda 的配置信息
## 配置镜像源(中科大)
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --remove-key channels ## 恢复默认源
## 配置代理
conda config --set proxy_servers.http http://192.168.2.41:1314
conda config --set proxy_servers.https http://192.168.2.41:1314
全局 python 命令别名配置
vim ~/.zshrc
## Global Python Path
alias gpython='/root/.local/share/uv/python/cpython-3.12.10-linux-x86_64-gnu/bin/python3.12'
alias gpip='/root/.local/share/uv/python/cpython-3.12.10-linux-x86_64-gnu/bin/pip3'
requirements.txt 格式
uvicorn~=0.32.0 ## 安装兼容版本 0.32.0 但不能超出 0.33.0
uvicorn==0.32.0 ## 安装确切版本 0.32.0 的 uvicorn
uvicorn>=0.32.0 ## 安装版本大于或等于 0.32.0 的 uvicorn
uvicorn<=0.32.0 ## 安装版本小于或等于 0.32.0 的 uvicorn
uvicorn>0.32.0 ## 安装版本大于 0.32.0 的 uvicorn
uvicorn<0.32.0 ## 安装版本小于 0.32.0 的 uvicorn
uvicorn ## 安装最新版本的 uvicorn
uvicorn>=0.32.0,<0.35.3 ## 安装版本在 0.32.0 和 0.35.3 之间的 uvicorn(不包括 0.35.3)
uvicorn[standard]==0.32.0 ## 安装 0.32.0 版本的 uvicorn,并包含标准功能集的依赖
./local_package/ ## 从当前目录下的 local_package 文件夹安装本地包
git+https://github.com/encode/uvicorn.git@main ## 从 GitHub 上的 uvicorn 仓库安装最新的主分支代码
uv 镜像管理
## 永久设置阿里云镜像
export UV_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/
source ~/.zshrc
uv 命令自动补全
echo 'eval "$(uv generate-shell-completion zsh)"' >> ~/.zshrc
echo 'eval "$(uvx --generate-shell-completion zsh)"' >> ~/.zshrc
uv 项目结构
.
├── .venv
│ ├── bin
│ ├── lib
│ └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock
pyproject.toml
包含有关您的项目的元数据
.python-version
文件包含项目的默认 Python 版本。此文件告诉 uv 在创建项目虚拟环境时使用哪个 Python 版本
.venv
文件夹包含项目的虚拟环境,这是一个与系统其他部分隔离的 Python 环境。uv 将在这里安装项目的依赖项
uv.lock
是一个跨平台的锁文件,其中包含项目依赖项的精确信息。与用于指定项目总体需求的 pyproject.toml 不同,锁文件包含项目环境中已安装的精确解析版本。此文件应纳入版本控制,以便在不同机器上实现一致且可重复的安装,uv.lock 是一个人类可读的 TOML 文件,但由 uv 管理,不应手动编辑。
uv 互转 requirements.txt 与 pyproject.toml
requirements.txt -> pyproject.toml
uv init
uv add -r requirements.txt
pyproject.toml -> requirements.txt
uv pip compile pyproject.toml --all-extras --output-file requirements.txt
uv 为什么可以自动安装 Python 包
uv 通过解析 Python 脚本中的 import 语句,自动检测代码中使用了哪些外部库。
import requests ## uv 会检测到 requests 并自动安装
当你运行:
uv run my_script.py
如果 requests 还没有安装,uv 会自动下载安装。
uv 结合了 pip 和 virtualenv 的功能,会在执行 Python 代码前检查是否安装了所需的依赖。如果某个包不存在,它会:
- 解析 import 语句或 requirements.txt、pyproject.toml 文件。
- 在 uv 的依赖解析器中检查哪些包需要安装或更新。
- 下载并安装缺失的包,而无需手动运行 pip install。
uv pip sync 和 uv pip install 的区别?
uv pip install
- 支持从 requirements.txt 安装(但不会卸载未使用的包)
- 增量安装:只会添加或更新包,不会清理旧的或多余的包。
- 常用于开发阶段或快速测试。
uv pip sync
- 安装 requirements.txt 中所有指定版本的包;
- 移除当前环境中不在 requirements.txt 中的多余包;
- 保证你的虚拟环境完全一致、干净
功能点 | uv pip install | uv pip sync |
---|---|---|
安装新依赖 | ✅ 支持 | ✅ 支持 |
安装指定版本 | ✅(如果明确指定) | ✅(锁定版本) |
卸载多余依赖 | ❌ 不会卸载多余包 | ✅ 会卸载所有未在文件中定义的依赖 |
保证环境一致性 | ❌ 无法保证 | ✅ 强一致性 |
适用场景 | 开发调试,临时添加依赖 | 部署上线,CI/CD,同步统一环境 |
uv 与 pip 对应关系
功能 | uv** 命令** | 传统 pip/工具组合命令 |
---|---|---|
编译依赖锁定文件(含版本) | uv pip compile requirements.in | pip-compile requirements.in(来自 pip-tools 工具) |
同步环境(安装+卸载) | uv pip sync requirements.txt | pip-sync requirements.txt(来自 pip-tools 工具) |
安装依赖(不卸载) | uv pip install | pip install |
卸载依赖(手动) | uv pip uninstall | pip uninstall |
安装:
pip install pip-tools
pip-compile requirements.in
pip-sync requirements.txt
uv 模拟 conda 环境集中管理
mkdir ~/.venvs
cd ~/.venvs
uv venv xinference --python 3.11
source ~/.venvs/xinference/bin/activate
python -m ensurepip --upgrade ## Python 自带的 ensurepip 模块可以为虚拟环境安装 pip
ls ~/.venvs
rm -rf ~/.venvs/xinference
uv 安装确认是否使用了指定的镜像源
uv pip install python-docx --verbose / -v
在输出中查找包含您指定的镜像源 URL 的信息,以确认配置是否生效。
何时会生成或更新 uv.lock
- 初次运行 uv add 添加依赖时自动生成;
- 修改 pyproject.toml 后再次运行 uv sync 会更新;
- 可以显式重建锁文件:uv lock
pip 依赖批量导出
pip freeze > requirments.txt
## 就算没 freeze 全部依赖,download 也能解析依赖关系并下载底层依赖
pip download -r requirements.txt -d ./packages --platform manylinux2014_x86_64 --python-version 3.11
pip install --no-index --find-links=./packages -r requirements.txt
pip 命令补全
pip completion --zsh >> ~/.zshrc
source ~/.zshrc
pip 全局缓存
默认情况下,pip 会将下载的包缓存在 ~/.cache/pip
目录中。
安装包时检查缓存 在安装包时,pip 会优先检查缓存目录,如果缓存中存在对应的包版本,就不会重新下载。
Using cached docx-0.2.4-py3-none-any.whl ## 使用缓存
Downloading docx-0.2.4-py3-none-any.whl ## 未使用缓存
pip install --no-cache-dir docx==0.2.4 ## 强制不使用缓存, 从 PyPI 重新下载
pip cache purge ## 手动清理了缓存目录, pip 将无法从缓存中读取,需重新从 PyPI 下载包
pip 安装范围
pip install "fastapi[all]" ## 不能去掉引号
pip install fastapi
**<font style="color:##0e0e0e;">pip install "fastapi[all]"</font>**
<font style="color:##0e0e0e;">pip install fastapi uvicorn[standard] pydantic sqlalchemy databases jinja2 websockets</font>
**<font style="color:##0e0e0e;">pip install fastapi</font>**
pip 安装没权限
- 使用管理员权限运行 PowerShell
- 以“管理员身份”启动 IntelliJ IDEA,只要 IntelliJ IDEA 是以管理员身份运行的,它内置的终端也就拥有管理员权限。
pip 用户级配置文件
[global]
proxy = 127.0.0.1:7890
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = pypi.org
mirrors.aliyun.com
conda 命令补全
https://docs.conda.io/projects/conda/en/23.10.x/user-guide/configuration/enable-tab-completion.html
限定 oh-my-zsh 使用
git clone https://github.com/conda-incubator/conda-zsh-completion ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/conda-zsh-completion
plugins=(… conda-zsh-completion)
## autoload -U compinit && compinit ## 不一定需要
conda 用户级配置文件
channels:
- conda-forge
- defaults
channel_priority: strict
proxy_servers:
http: http://127.0.0.1:7890
https: http://127.0.0.1:7890
auto_activate_base: true
pip --no-build-isolation 参数
pip install "xinference[all]" --no-build-isolation
--no-build-isolation
的作用是 禁用默认的构建隔离机制 不要使用临时隔离环境构建包,而是直接使用当前 Python 环境中已经安装的构建依赖。
pip download 下载不了最新版本的依赖
pip download greenlet~=3.2.1 -d ./packages
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
ERROR: Could not find a version that satisfies the requirement greenlet~=3.2.1 (from versions: 0.1, 0.2, 0.3, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.4.9, 0.4.10, 0.4.11, 0.4.12, 0.4.13, 0.4.14, 0.4.15, 0.4.16, 0.4.17, 1.0a1, 1.0.0, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.3.post0, 2.0.0a1, 2.0.0a2, 2.0.0rc1, 2.0.0rc2, 2.0.0rc3, 2.0.0rc4, 2.0.0rc5, 2.0.0, 2.0.0.post0, 2.0.1, 2.0.2, 3.0.0a1, 3.0.0rc1, 3.0.0rc2, 3.0.0rc3, 3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.1.0, 3.1.1)
ERROR: No matching distribution found for greenlet~=3.2.1
因为 pip 命令的 python 版本过低,pip download 会根据您当前的 Python 版本和操作系统,筛选出兼容的包进行下载。如果某个包的元数据(如 Requires-Python 字段)指定了特定的 Python 版本范围,而您的环境不满足该要求,pip download 将不会下载该包。
例如,langchain 的某些版本要求 Python 版本在 >=3.9,<4.0 范围内。如果您使用的是 Python 3.8 或 3.12,pip download 可能会因为版本不兼容而无法下载对应的包。
conda 避免律师函
## 禁用 Anaconda 的匿名数据收集
conda config --set anaconda_anon_usage off
## 避免使用 Anaconda 的默认软件包渠道
## 移除默认渠道
conda config --remove channels defaults
## 添加 conda-forge 渠道并设置优先级
conda config --add channels conda-forge
conda config --set channel_priority strict
使用 Miniforge 替代 Miniconda
https://github.com/conda-forge/miniforge