
Pypi全称Python Package Index是 Python 官方的第三方软件包仓库软件包是以构建后的分发包.whl和.tar.gz形式存在。pip install 默认就是去 PyPI 上搜索、下载并安装这个包的。pip install 把从远程仓库下载得到的 .whl 顺便解压部署到 site-packages。build命令Build构建 指的是将你的原始源代码转换成可分发的标准安装包的过程。源代码按照 Python 社区标准打包成.whl【ZIP格式】和.tar.gz两个文件。Build 不是把 Python 编译成机器码不像 C/C而是把散落的文件按 PEP 标准打包归档。纯 Python 包的.whl里仍然是.py文件只是被组织成了标准目录结构。工具本质上是一个以解决特定任务为目标、通过命令行或脚本调用的可执行程序。它不是一个技术类型而是一个使用形态——同样的.py代码封装方式不同可以是库、可以是工具、也可以是 Web 服务。1.conda环境隔离【虚拟环境】、依赖管理【能安装非 Python 底层依赖】、多语言支持。工具管理范围优势短板CondaPython 系统底层库 (CUDA/MKL 等)科学计算、深度学习、多 Python 版本普通轻量小库更新慢pip仅 Python 纯代码包第三方 Python 库最全、更新快无法解决 C/C 底层依赖安装curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh bash Miniconda3-latest-MacOSX-x86_64.sh # conda 临时不生效 conda deactivate必要性uv/pip只能安装 Python 包。如果某个 Python 包依赖系统级的共享库如libgdal,ffmpeg,cuda-toolkit,mkl你必须自己在操作系统层面手动安装它们或者祈祷 pip 下载的 wheel 包里捆绑了所有动态链接库。Conda:它是一个通用的包管理器。它可以安装 Python 解释器本身也可以安装 C/C 编译器、CUDA 运行时、R 语言、PostgreSQL 客户端等。# 新建一套隔离的 Python、pip、各类依赖包不同环境包互不干扰是运行环境,非项目目录 conda create -n myenv python3.10 # 创建环境时直接安装包 conda create -n myenv python3.10 numpy pandas scikit-learn # 激活 / 退出环境 conda activate myenv # deactivate 命令后不需要显式提供环境名 conda deactivate # 查看当前所有环境列表 conda env list # 或 conda info --envs # 克隆已有环境 conda create -n new_env --clone old_env # 删除环境 conda remove -n myenv --all # 导出环境配置推荐用显式依赖而非全量导出 conda env export environment.yml # 完整导出含版本号 conda env export --from-history env.yml # 仅导出手动安装的包更干净 # 从文件创建环境 conda env create -f environment.yml 以下为包管理命令 # 在当前环境中安装包 conda install numpy pandas # 安装指定版本 conda install numpy1.24.3 # 从特定 channel 安装 conda install -c conda-forge gdal # 卸载包 conda remove numpy # 更新包 conda update numpy # 更新单个包 conda update --all # 更新环境中所有包 # 搜索包查看可用版本和来源 conda search numpy # 查看已安装的包 conda list # 当前环境 conda list -n myenv # 指定环境当激活某个环境后【执行命令 conda activate langchain_v1.2】终端会显示该环境名所以conda deactivate 不需要显式指定环境名该命令执行完毕后终端就不会显示该环境名。1.1.仓库在 Conda/Anaconda 生态中Channel频道本质上就是一个软件包的仓库源。你可以把它理解为手机上的“应用商店”或 Linux 中的“软件源”。Conda 从你配置的 Channel 中搜索、下载和安装包。Anaconda 的专属商业仓库 defaultshttps://repo.anaconda.com/pkgs/main https://repo.anaconda.com/pkgs/r #R语言商业仓库 https://repo.anaconda.com/pkgs/msys2 # 仅 Windows社区仓库 (conda-forge)开源免费、与 defaults 高度兼容但混用时偶尔可能出现依赖冲突。# 从 conda-forge 安装 pandas conda install -c conda-forge pandas # 同时从多个 channel 搜索按优先级从左到右 conda install -c pytorch -c nvidia pytorch-cuda #查看当前配置的 Channel conda config --show channels #永久添加 Channel推荐 # 添加 conda-forge 并设为高优先级 conda config --add channels conda-forge conda config --set channel_priority strict2.pip包管理# 1. 创建虚拟环境 .venv 里面包含独立Python环境需要的所有文件 python3 -m venv .venv # 2. 激活环境Mac / Linux source .venv/bin/activate # 激活后终端会出现 (.venv)此时 pip 只会装在这个环境里 pip install requests # 3. 退出虚拟环境 deactivate # 不用了直接删除整个文件夹即可清理 rm -rf .venv它和 conda 的区别venvPython 原生自带只管理 Python 与 Python 包不能管理 CUDA、C 库、不同 Python 大版本。conda独立工具可以安装不同版本 Python、底层编译依赖cuda、ffmpeg 等。有了虚拟环境保证每个项目拥有专属的Python运行环境不同环境下相同包不同版本就不会出现冲突等问题。pip install flask #全局安装flask模块 pip show flask #展示模块flask的详情版本号、包所在的全局路径sys.path是 Python 的模块搜索路径列表Python 导入import xxx时会按顺序遍历这个列表里的文件夹寻找你要导入的包 / 脚本。pip install只会把第三方包安装到 site-packagessite-packages 只是 sys.path 其中一条路径。将依赖列表方便准确的分享pip3 freeze - requirements.txt pip3 install -r requirements.txt #安装requirements.txt中依赖项缺点freeze指令无法区分直接依赖项 or 间接依赖项。例如pip3 install flask 只有一个依赖但是requirements.txt文件包含间接依赖具体如下这样依赖项比较多时分享安装很麻烦。blinker1.9.0 click8.4.2 Flask3.1.3 itsdangerous2.2.0 Jinja23.1.6 MarkupSafe3.0.3 Werkzeug3.1.8并且uninstall卸载依赖时只能卸载flask依赖包其产生的间接依赖并不会被卸载。优化方案之pyproject.toml文件【pyproject.toml管理项目依赖】[project] name python dependencies [ Flask3.1.3 ]项目根目录下执行以下命令安装pip3 install -e . 。pyproject.toml管理项目依赖的缺点不能通过pip3等命令安装依赖只能手动查找官方相关依赖的版本号并手动写入pyproject.toml文件中。解决办法uv or poetry or pdm 命令工具替代pip3等相关命令。3.UVuv or poetry or pdm 这些命令其实是对pip3命令的高级封装其核心目的就是将我们从繁琐的环境和依赖中解放出来。使用这些高级命令时项目中必须将解释器配置成虚拟环境下的解释器而非全局解释器。uv add flask # 该命令直接包含以下命令所有功能 python -m venv .venv source .venv/bin/avtivate edit pyproject.toml pip3 install -e . uv sync #当拿到别人项目后执行该命令则自动基于pyproject.toml文件创建虚拟环境、各项依赖等 uv run xxx.py #等价于 python xx.py当然在uv环境下同样可以执行python相关命令。uv python list #输出uv支持的所有Python版本 uv python install cpython-版本号 #uv安装指定版本的python uv run -p 3.12 xx.py #指定python版本运行脚本程序 uv run -p 3.12 python #进入交互页面 uv init -p 3.13 #在项目根目下自动生成 Python 项目基础骨架包含pyproject.toml、虚拟环境等 uv add flask #安装依赖并且将其添加到pyproject.toml文件中 uv run xx.py # 因为Init指定了版本号uv运行脚本时无需指定版本号直接运行脚本 uv tree #打印依赖树 ruff check #检查代码是否符合编码规范 uv add ruff --dev #将工具ruff作为依赖下载下来--dev 避免打包时将ruff工具打包进去进而携带到线上环境 uv remove ruff --dev uv tool install ruff # 安装工具的方式安装工具到系统中这些工具脱离当前工程独立运行。此种方式安装的工具整个系统可用 uv tool list将代码编译成可以直接运行的工具