开发基础工具
Conda
管理环境
-
创建新环境
conda create -n env_name python=3.10:创建名为env_name、Python版本为3.10的环境。conda create -n env_name python=3.10 -c conda-forge:从conda-forge频道创建环境(AI包更全)。
-
激活环境
conda activate env_name:激活env_name环境。 -
退出环境
conda deactivate:退出当前激活的环境。 -
列出所有环境
conda env list或conda info --envs:显示所有可用环境。 -
删除环境
conda remove -n env_name --all:删除名为env_name的环境。 -
复制环境
conda create -n new_env --clone old_env:克隆一个现有环境。 -
导出环境
conda env export > environment.yml:导出包含确切版本和来源的完整环境(跨平台性较差)。conda env export --from-history > environment.yml:仅导出你明确指定的包(跨平台性更好)。
-
从文件创建环境
conda env create -f environment.yml:根据environment.yml创建新环境。
管理包
-
安装包
conda install package_name:在当前环境中安装package_name。conda install numpy pandas matplotlib:一次性安装多个包。
-
更新包
conda update package_name:将package_name更新到最新版本。 -
移除包
conda remove package_name:卸载package_name。 -
列出已安装包
conda list:列出当前环境中已安装的包。 -
搜索包
conda search package_name:搜索可用的包。 -
清理Conda
conda clean --all:清理缓存(下载的包缓存、索引等),释放磁盘空间。 -
更新Conda
conda update conda:更新conda本身。conda update --all:更新当前环境中所有包(可能引起依赖冲突,需谨慎)。
Pip & UV
uv提供了一个与pip完全兼容的接口,可以作为pip的“即插即用”替代品,速度提升 10-100 倍 。以下所有pip命令都可用uv pip替换,以获得性能提升。
管理包
-
安装包
pip install package_name:安装package_name。uv pip install package_name:使用uv安装,速度更快。
-
从 requirements 文件安装
pip install -r requirements.txt:根据requirements.txt文件安装包。uv pip install -r requirements.txt:uv的等价命令。
-
从 Git 仓库安装
pip install git+https://github.com/user/repo.git:直接从 Git 仓库安装(常用于安装未发布的库或特定分支)。 -
可编辑模式安装
pip install -e .:在当前目录下以“可编辑”模式安装项目。对正在开发的包非常有用,修改源码后无需重新安装即可生效。 -
升级包
pip install --upgrade package_name:升级package_name到最新版本。 -
卸载包
pip uninstall package_name:卸载package_name。 -
列出已安装包
pip list:列出已安装的包。uv pip list:uv的等价命令。
-
查看可用更新
pip list --outdated:查看有哪些包有更新版本。 -
显示包信息
pip show package_name:显示package_name的详细信息(版本、依赖、安装路径等)。 -
冻结当前环境的包
pip freeze > requirements.txt:将当前环境中所有通过 pip 安装的包及其版本输出到requirements.txt。uv pip freeze > requirements.txt:uv的等价命令。
UV
uv是一个用 Rust 编写的极速 Python 包和项目管理器,旨在替代pip、pip-tools、pipx、poetry、pyenv、virtualenv等工具 。它提供了一个统一的命令行界面来完成所有 Python 项目相关的任务。
基本结构文件
1# 项目结构2# ├── .venv/ # 虚拟环境(自动创建)3# ├── pyproject.toml # 项目配置4# ├── uv.lock # 依赖锁定文件5# └── main.py # 入口文件-
.venv/- 虚拟环境目录,存放项目独立的 Python 解释器和已安装的包- 每个项目有自己的虚拟环境,避免包冲突,由 uv 自动创建和管理,通常不需要手动操作
- 可以随时删除重建(
uv venv重新创建),添加到.gitignore,不需要提交到 git
-
pyproject.toml- 项目配置文件(核心),定义项目元数据、依赖、构建配置等- 现代 Python 项目的标准配置文件,替代了
setup.py、requirements.txt、setup.cfg等,由 uv 维护,但可以手动编辑 - 基础格式:
1[project]2# 项目基本信息3name = "my--project"4version = "0.1.0"5description = "Description"6authors = [7{name = "Your Name", email = "you@example.com"}8]9requires-python = ">=3.8"10dependencies = [11"torch>=2.0.0",12"numpy>=1.24.0",13"pandas>=2.0.0",14"transformers>=4.30.0",15]1617[project.optional-dependencies]18# 可选依赖组19dev = [20"pytest>=7.0.0",21"black>=23.0.0",22"jupyter>=1.0.0",23]24gpu = [25"cudatoolkit>=11.7",26]2728[build-system]29requires = ["hatchling"]30build-backend = "hatchling.build"3132[tool.ruff]33# 代码检查工具配置(可选)34line-length = 883536[tool.black]37# 代码格式化工具配置(可选)38line-length = 88
- 现代 Python 项目的标准配置文件,替代了
-
uv.lock- 依赖锁定文件,锁定所有依赖的精确版本和哈希值- 自动生成,不要手动编辑,包含所有依赖(包括间接依赖)的精确版本
- 确保团队或部署环境使用完全相同的依赖,比
requirements.txt更可靠 - 应该提交到 git,确保环境一致性
项目管理
-
初始化新项目
uv init project_name:创建一个新的 Python 项目,生成pyproject.toml、README.md、.gitignore等文件 。cd project_name:进入项目目录。
-
创建虚拟环境
uv venv:在当前目录创建虚拟环境 (默认为.venv)。uv会自动管理它 。uv venv --python 3.11:使用指定 Python 版本创建虚拟环境 。
-
激活/退出虚拟环境
Terminal window 1# 激活 (macOS/Linux)2source .venv/bin/activate3# 激活 (Windows)4.venv\Scripts\activate5# 退出6deactivate -
添加依赖
uv add requests:添加requests到项目依赖,并更新pyproject.toml和uv.lock。uv add 'numpy>=1.20,<2.0':添加指定版本的依赖。uv add pytest --dev:将pytest添加为开发依赖 。
-
移除依赖
uv remove requests:从项目中移除requests。 -
同步依赖
uv sync:根据pyproject.toml和uv.lock文件,安装或更新项目的所有依赖,确保环境完全一致 。uv sync --locked:仅当uv.lock文件未更改时才同步,用于 CI 环境确保可重复性 。
-
生成锁定文件
uv lock:生成或更新uv.lock文件,精确锁定所有依赖的版本 。uv lock --upgrade-package requests:仅升级requests并更新锁定文件 。
-
运行项目脚本
uv run main.py:在项目的虚拟环境中运行main.py(无需手动激活环境)。uv run ruff check:在项目环境中运行已安装的工具 。
Python 版本管理
-
安装指定Python版本
uv python install 3.12 3.11:安装 Python 3.12 和 3.11 。 -
列出可用/已安装版本
uv python list:列出所有可用的或已安装的 Python 版本 。 -
固定项目Python版本
uv python pin 3.11:将当前项目使用的 Python 版本固定为 3.11 。 -
查找当前Python
uv python find:显示当前使用的 Python 解释器路径 。
工具管理
-
运行一次性工具 (无需安装)
uvx ruff check .:uvx是uv tool run的别名,在一个临时隔离环境中运行ruff,用完即弃 。 -
安装全局工具
uv tool install ruff:将ruff安装为全局可用的工具(类似于pipx)。uv tool run ruff check .:运行已安装的全局工具。
Git
官方文档——Pro Git
仓库状态与更新
-
查看仓库状态
git status:查看当前仓库状态,了解未提交的更改和未跟踪的文件。 -
查看远程更新
git fetch:从远程仓库获取更新,但不合并到本地。- 之后可使用
git diff origin/main查看与远程主分支的差异。
- 之后可使用
-
拉取更新
git pull:获取远程仓库的更新并合并到当前分支(通常是git fetch+git merge)。git pull --rebase:获取远程更新,然后用当前分支的提交在远程分支之上“重演”,保持提交历史线性整洁。
常用 Git 命令
-
克隆仓库
git clone https://github.com/user/repo.git:将远程仓库克隆到本地。git clone --depth 1 https://github.com/user/repo.git:浅克隆,只下载最新的提交历史,对于大型项目(如某些AI模型库)可以大大加快速度。
-
添加更改
git add file:将file的更改添加到暂存区。git add .:将当前目录下的所有更改(包括新文件和修改)添加到暂存区。git add -u:仅将已跟踪文件的更改添加到暂存区。
-
提交更改
git commit -m "commit message":提交暂存区的更改并添加提交信息。git commit -a -m "commit message":跳过git add,直接提交所有已跟踪文件的更改。
-
查看差异
git diff:查看工作目录和暂存区之间的差异。git diff --staged:查看已暂存的更改与上次提交之间的差异。git diff HEAD..origin/main:查看本地分支和远程main分支之间的差异(先执行git fetch origin)。
-
撤销更改
git restore file:**【新方式】**丢弃工作目录中对file的修改(替代git checkout -- file)。git restore --staged file:**【新方式】**将文件从暂存区移回工作目录(取消暂存,替代git reset HEAD file)。git commit --amend -m "new message":修改最近一次提交的提交信息或包含新的更改。git reset --hard HEAD~1:彻底删除最近一次提交,回到之前的状态(慎用,不可逆)。
-
推送更改
git push origin branch_name:将本地分支推送到远程仓库。git push -u origin branch_name:首次推送本地新分支到远程,并建立关联关系,后续可直接用git push。
-
查看提交日志
git log:查看详细的提交历史记录。git log --oneline --graph --all -n 5:以单行、图形化方式查看所有分支的最近5次提交,非常直观。
-
分支管理
git branch:列出本地所有分支。git branch -a:列出所有本地和远程分支。git switch -c new_branch:**【新方式】**创建并切换到new_branch分支(比checkout -b语义更清晰)。git switch new_branch:**【新方式】**切换到已存在的new_branch分支。git merge branch_name:将branch_name合并到当前分支。git branch -d branch_name:删除本地分支。git push origin --delete branch_name:删除远程分支。
-
储藏更改
git stash:暂时保存当前未提交的更改,使工作目录变得干净。git stash pop:重新应用最近一次储藏的更改,并从储藏列表中删除。git stash apply:重新应用储藏的更改,但不从列表中删除。git stash list:查看所有储藏记录。
配置
-
设置全局用户名和邮箱
git config --global user.name "Your Name":设置用户名。git config --global user.email "you@example.com":设置邮箱。
-
设置默认分支名
git config --global init.defaultBranch main:将新仓库的默认分支名设置为main。 -
查看配置信息
git config --list:列出所有Git配置。
Some information may be outdated