【上一篇】
目录
[5.1 使用 pip list 结合 linux 命令](#5.1 使用 pip list 结合 linux 命令)
[5.2 使用 pip freeze](#5.2 使用 pip freeze)
[5.3 使用 pkg_resources 库](#5.3 使用 pkg_resources 库)
[5.4 使用 pip-review 库](#5.4 使用 pip-review 库)
[5.5 使用其他库进行升级](#5.5 使用其他库进行升级)
五、升级管理依赖包
5.1 使用 pip list 结合 linux 命令
-
pip list 命令可以查询已安装的库,结合 Linux 的一些命令(cut、sed、awk、grep......),可以直接在命令行中实现批量升级
#查看依赖包
pip list
-
使用 awk 命令升级 : 先 list 查询,接着第一个 awk 取出行号大于等于 3 的内容,第二个 awk 取出第一列的内容,然后作为参数传给最后的升级命令
python3 -m pip list | awk 'NR>=3{print}' | awk '{print $1}' | xargs python3 -m pip install -U
-
查询已过期的依赖库
pip list --outdated
或 指定 --format=freeze 格式
pip list --outdated --format=freeze
-
使用cut 进行= 等号分隔
pip list --outdated --format=freeze | cut -d = -f 1 | xargs pip install -U
5.2 使用 pip freeze
如果是全量升级已安装的库,可以先用 pip freeze 命令生成依赖文件,获取到已安装的库及其当前版本号:
pip freeze > requirements.txt
然后修改文件中的"=="为">=",接着执行:
requirements.txt 中依赖库 == 需要换成 >= 进行升级
pip install -r requirements.txt --upgrade
5.3 使用 pkg_resources 库
pkg_resources 是 setuptools 库的一部分,用于查找和管理 Python 库、版本依赖关系、相关联的资源文件等。可以这样写:
# 需要安装 setuptools
import pkg_resources
from subprocess import call
packages = [dist.project_name for dist in pkg_resources.working_set]
call("pip install --upgrade " + ' '.join(packages), shell=True)
5.4 使用 pip-review 库
pip-review 库是一个专门用来方便升级 Python 库的工具,可以查看已过期的库、自动升级或者交互式选择性地升级:
需要安装 pip-review :
pip install pip-review

5.5 使用其他库进行升级
-
pipupgrade
-
pur
-
pip_upgrade_outdated
-
pipdate
-
pip-review
-
pip-upgrader
-
pipdeptree
六、常见问题和疑难解答
6.1、常见错误和解决方法
-
错误信息:ModuleNotFoundError: No module named 'pip'
-
错误信息:PermissionError: [Errno 13] Permission denied: '/path/to/package'
-
错误信息:Could not find a version that satisfies the requirement package-name
-
错误信息:ERROR: Command errored out with exit status 1
-
错误信息:ERROR: No matching distribution found for package-name
6.2、处理pip安装速度慢的问题
-
更换镜像源:pip默认从PyPI(Python Package Index)下载包,但有时PyPI的下载速度可能较慢。可以更换为国内的镜像源,例如清华大学的镜像源、阿里云的镜像源等。可以通过在命令行中设置环境变量
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package-name来使用清华大学的镜像源。 -
使用科学上网
-
使用缓存:可以使用本地缓存来加快pip的下载速度。可以使用pip的缓存功能,将下载下来的包缓存到本地,然后在后续的安装过程中直接使用缓存中的包,而不需要重新下载。
-
升级pip版本:确保你正在使用最新版本的pip,可以通过运行命令
pip install --upgrade pip来升级pip。新版本的pip可能会提供更好的下载速度和性能。 -
检查网络连接:有时下载速度慢可能是由于网络连接问题造成的。可以尝试检查网络连接是否正常,或者尝试在其他网络环境下进行下载。
命令行使用
适用于windows、linux、macOS等多种操作系统,方式一样
直接在安装包的命令后面加 -i pip源网址
命令行使用
适用于windows、linux、macOS等多种操作系统,方式一样
直接在安装包的命令后面加 -i pip源网址,如:
## 阿里云
pip install torch==1.8.1 -i https://mirrors.aliyun.com/pypi/simple/
#清华大学
pip install torch==1.8.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
##网易
pip install torch==1.8.1 -i https://mirrors.163.com/pypi/simple/
## 豆瓣
pip install torch==1.8.1 -i https://pypi.douban.com/simple/
百度云
pip install torch==1.8.1 -i https://mirror.baidu.com/pypi/simple/
中科大
pip install torch==1.8.1 -i https://pypi.mirrors.ustc.edu.cn/simple/
华为云
pip install torch==1.8.1 -i https://mirrors.huaweicloud.com/repository/pypi/simple/
腾讯云
pip install torch==1.8.1 -i https://mirrors.cloud.tencent.com/pypi/simple/
6.3、解决依赖冲突的技巧
-
首先,可以尝试更新已安装的依赖项。使用命令pip install --upgrade package-name来更新特定的依赖项,或者使用pip freeze --local | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip install -U来更新所有已安装的依赖项。
-
使用虚拟环境:创建一个虚拟环境可以帮助隔离不同项目的依赖项,防止冲突发生。可以使用工具如venv、virtualenv或conda来创建虚拟环境,并在每个项目中使用独立的虚拟环境。
-
解决版本冲突:有时候,不同依赖项对同一软件包的版本要求可能存在冲突。可以尝试手动指定依赖项的版本,或者使用工具如pipenv或conda来管理依赖项的版本。
-
移除冲突的依赖项:如果依赖冲突无法解决,可以尝试移除其中一个依赖项。使用命令pip uninstall package-name来移除特定的依赖项,确保在移除之前了解其对项目的影响。
-
pip requirements.txt 忽略版本限制
方式1:忽略已安装包的版本冲突:
pip install -r requirements.txt --ignore-installed
#该参数会忽略本地已安装包的版本差异,直接按 requirements.txt 安装。适用于已有环境中部分包版本不一致但仍想继续安装的情况
方式2:跳过依赖检查
pip install -r requirements.txt --no-deps
#只安装文件中列出的包,而不自动安装它们的依赖
#方法3:降低依赖解析严格度
pip install -r requirements.txt --use-deprecated=legacy-resolver
#使用旧版解析器减少版本冲突检测,适合在新版 pip 解析器过于严格导致频繁冲突时使用。
#注意:忽略版本限制可能引发兼容性问题,建议先在测试环境验证无误再用于生产 ,可以使用 pip freeze
#方法4:只安装当前版本,不寻找最新版本 --force-reinstall 会忽略依赖关系,可能会导致依赖问题
pip install --force-reinstall package_name
七、总结
pip是Python的包管理工具,用于安装、升级和管理Python包和依赖项。它提供了一组基本命令和一些高级用法,使开发者能够轻松地管理项目的依赖项。pip的基本命令和一些高级用法:
-
安装包:使用
pip install package-name命令可以安装特定的包。它会自动解析并安装所需的依赖项。 -
升级包:使用
pip install --upgrade package-name命令可以升级已安装的包到最新版本。 -
卸载包:使用
pip uninstall package-name命令可以卸载指定的包。 -
列出已安装的包:使用pip list命令可以列出当前环境中已安装的所有包。
-
导出和安装依赖项:使用pip freeze > requirements.txt命令可以将当前环境中的所有包及其版本信息导出到一个文本文件中,通常称为requirements.txt。然后可以使用
pip install -r requirements.txt命令根据该文件安装所有依赖项。 -
安装指定版本的包:使用
pip install package-name==version命令可以安装指定版本的包。 -
安装开发版本的包:使用
pip install -e git+https://github.com/user/repo.git@branch#egg=package-name命令可以安装Git仓库中的开发版本