Python 包管理工具
什么是包管理工具
包管理工具是用于管理Python包的工具,包括安装、升级、卸载、列出已安装的包等功能。Python常用的包管理工具有pip、conda、poetry等。
pip
pip是Python的默认包管理工具,用于安装和管理Python包。
安装pip
Python 3.4+ 和 Python 2.7.9+ 已经内置了pip,无需额外安装。可以通过以下命令检查pip是否已安装:
bash
pip --version
# 或
pip3 --version如果没有安装pip,可以通过以下方式安装:
Windows安装
下载get-pip.py脚本:
bashcurl https://bootstrap.pypa.io/get-pip.py -o get-pip.py运行脚本:
bashpython get-pip.py
Linux/macOS安装
bash
# 下载并运行脚本
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py常用命令
安装包
bash
# 安装最新版本
pip install package_name
# 安装指定版本
pip install package_name==1.0.0
# 安装大于等于指定版本
pip install package_name>=1.0.0
# 安装小于等于指定版本
pip install package_name<=1.0.0
# 安装包并指定源
pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple
# 从requirements.txt文件安装
pip install -r requirements.txt
# 安装开发版本
pip install -e .升级包
bash
# 升级指定包
pip install --upgrade package_name
# 升级pip自身
pip install --upgrade pip
# 升级所有已安装的包
pip freeze --local | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip install -U卸载包
bash
# 卸载指定包
pip uninstall package_name
# 卸载多个包
pip uninstall package1 package2 package3
# 不询问直接卸载
pip uninstall -y package_name列出已安装的包
bash
# 列出所有已安装的包
pip list
# 列出可升级的包
pip list --outdated
# 生成requirements.txt文件
pip freeze > requirements.txt查看包信息
bash
# 查看指定包的信息
pip show package_name
# 查看指定包的详细信息
pip show -f package_name搜索包
bash
# 搜索包
pip search package_name清理缓存
bash
# 清理缓存
pip cache purge
# 查看缓存目录
pip cache dir配置pip源
临时使用
bash
pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple永久配置
Linux/macOS
创建或编辑~/.pip/pip.conf文件:
bash
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
EOFWindows
创建或编辑%APPDATA%\pip\pip.ini文件:
ini
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn常用pip源
- 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里云:https://mirrors.aliyun.com/pypi/simple/
- 中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
- 豆瓣:https://pypi.douban.com/simple/
- 华为云:https://mirrors.huaweicloud.com/repository/pypi/simple/
conda
conda是Anaconda和Miniconda的包管理工具,不仅可以管理Python包,还可以管理其他语言的包。
安装conda
可以通过安装Anaconda或Miniconda来获得conda:
Anaconda:包含了Python解释器和大量常用的科学计算包,适合数据科学和机器学习开发。
Miniconda:只包含Python解释器和conda,体积较小,适合需要自定义环境的用户。
常用命令
环境管理
bash
# 创建环境
conda create -n env_name python=3.8
# 激活环境
# Windows
activate env_name
# Linux/macOS
source activate env_name
# 退出环境
# Windows
deactivate
# Linux/macOS
source deactivate
# 列出所有环境
conda env list
# 复制环境
conda create -n new_env --clone old_env
# 删除环境
conda remove -n env_name --all安装包
bash
# 安装指定包到当前环境
conda install package_name
# 安装指定包到指定环境
conda install -n env_name package_name
# 安装指定版本
conda install package_name=1.0.0
# 从requirements.txt安装
conda install --file requirements.txt升级包
bash
# 升级指定包
conda update package_name
# 升级所有包
conda update --all
# 升级conda自身
conda update conda
# 升级anaconda
conda update anaconda卸载包
bash
# 卸载指定包
conda remove package_name
# 卸载指定环境的包
conda remove -n env_name package_name列出已安装的包
bash
# 列出当前环境的所有包
conda list
# 列出指定环境的所有包
conda list -n env_name搜索包
bash
# 搜索包
conda search package_name配置conda源
添加源
bash
# 添加清华大学源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes查看源
bash
conda config --show channels删除源
bash
conda config --remove channels channel_namepoetry
poetry是一个现代的Python包管理工具,用于管理Python依赖和项目构建。
安装poetry
Windows安装
bash
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -Linux/macOS安装
bash
curl -sSL https://install.python-poetry.org | python3 -常用命令
初始化项目
bash
# 在当前目录初始化项目
poetry init
# 创建新的项目目录并初始化
poetry new project_name安装依赖
bash
# 安装所有依赖
poetry install
# 安装生产依赖
poetry install --no-dev
# 安装指定包
poetry add package_name
# 安装开发依赖
poetry add --dev package_name运行命令
bash
# 在虚拟环境中运行命令
poetry run python script.py
# 在虚拟环境中启动Python解释器
poetry run python
# 在虚拟环境中启动shell
poetry shell构建项目
bash
# 构建项目
poetry build发布项目
bash
# 发布项目到PyPI
poetry publish
# 发布到测试PyPI
poetry publish -r test-pypi查看依赖
bash
# 查看依赖树
poetry show --tree
# 查看可升级的依赖
poetry show --outdated虚拟环境
虚拟环境是Python项目的隔离环境,用于避免不同项目之间的依赖冲突。
创建虚拟环境
使用venv模块
bash
# 创建虚拟环境
python -m venv venv_name
# Windows激活
venv_name\Scripts\activate.bat
# Linux/macOS激活
source venv_name/bin/activate
# 退出虚拟环境
deactivate使用virtualenv
bash
# 安装virtualenv
pip install virtualenv
# 创建虚拟环境
virtualenv venv_name
# Windows激活
venv_name\Scripts\activate.bat
# Linux/macOS激活
source venv_name/bin/activate
# 退出虚拟环境
deactivaterequirements.txt
requirements.txt是一个文本文件,用于记录项目依赖的包及其版本。
生成requirements.txt
bash
# 使用pip生成
pip freeze > requirements.txt
# 使用conda生成
conda list -e > requirements.txt从requirements.txt安装
bash
# 使用pip安装
pip install -r requirements.txt
# 使用conda安装
conda install --file requirements.txt依赖管理最佳实践
- 使用虚拟环境:为每个项目创建独立的虚拟环境,避免依赖冲突。
- 固定依赖版本:在requirements.txt中固定依赖的版本,确保项目在不同环境中一致运行。
- 区分生产依赖和开发依赖:将生产依赖和开发依赖分开管理,减少生产环境的依赖数量。
- 定期更新依赖:定期更新依赖,修复安全漏洞和bug。
- 使用依赖管理工具:根据项目需求选择合适的依赖管理工具,如pip、conda、poetry等。
总结
Python常用的包管理工具有pip、conda、poetry等,每个工具都有其特点和适用场景。pip是Python的默认包管理工具,适合大多数项目;conda适合数据科学和机器学习项目;poetry是一个现代的包管理工具,适合管理复杂的项目依赖。
选择合适的包管理工具可以提高开发效率,避免依赖冲突,确保项目在不同环境中一致运行。
