Python的依赖管理

注意事项

建议使用普通用户安装第三方包;使用root用户安装第三方包可能会导致一些权限问题,而且可能会影响系统的稳定性和安全性。为了避免潜在的问题,建议在普通用户下使用以下方式安装第三方包。

Pip的常用操作

Pip是 Python 的包管理工具,用于安装和管理 Python 包。执行 "pip install pip" 时,会更新 pip 工具本身到最新版本。

## 安装全局依赖包
pip install <package_name>

## 卸载全局依赖包
pip uninstall <package_name>

## 列出所有全局依赖包
pip list

## 列出所有全局依赖包,与pip list的区别是输出信息的格式不同
pip freeze

全局依赖导入导出

## 将全局依赖导出到当前目录下的 requirements.txt 文件中
pip freeze > requirements.txt

## 安装当前目录下 requirements.txt 文件中的所有依赖包
pip install -r requirements.txt

项目依赖导入导出

仅导出当前项目的的依赖信息需要使用 pipreqs 工具

## 安装pipreqs
pip install pipreqs

## 在项目根目录下执行如下命令,该命令会导出当前项目的依赖到 requirements.txt 文件中
## 实测 pipreqs 导出的依赖不全,因此建议直接使用 freeze 导出全局所有依赖
pipreqs

## 安装当前目录下 requirements.txt 文件中的所有依赖包
pip install -r requirements.txt

生成全局依赖树(并非当前项目)

## 生成当前环境下的全局依赖树(并非当前项目)
pipdeptree > dependency_tree.txt

卸载所有依赖

注:如下命令很危险,不要在root用户下执行

## 生成一个包含当前环境中所有包的列表
pip freeze > installed_packages.txt

## 卸载列表中的所有包
pip uninstall -r installed_packages.txt -y

## 查看当前环境中的所有包
pip list

注:删除所有依赖是一个危险的操作,尤其是在root用户下,可能直接导致系统瘫痪。在Ubuntu的root用户下删除所有pip依赖后,会导致系统无法联网,通过如下命令解决:

## 手动连接指定网卡,一般为 eth0 或 ens33
sudo dhclient ens33

## 安装netplan
apt install netplan.io

## 使网卡配置生效
sudo netplan apply

卸载Python

通过pip安装的依赖包会统一存放在当前用户的特定目录下;为了确保系统安全,应该使用非root用户安装所有包,以使所有依赖包都存储在同一个用户目录下;

卸载Python时,已经下载的全局依赖不会被删除;因此在卸载 python 前,要先卸载所有依赖,然后再卸载python。

查看全局依赖的安装位置

Python没有提供查看全局依赖安装位置的命令,但pip 提供了类似的功能。通过 pip show 可以查看指定依赖的安装位置,以此便可知全局依赖的安装位置:

## 显示 requests 包的详细信息和安装位置(当前环境下的所有依赖都安装在同一个位置)
pip show requests

## 查看当前环境下所有的依赖包
pip list
举报

© 著作权归作者所有


1