You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成仅通过pip安装的Python包列表?若问题重复提前致歉

区分pip与系统包管理器安装的Python包列表方法

核心思路

系统包管理器(apt/yum/pacman)安装的Python包通常存放在系统默认的site-packages路径,而pip安装的包(尤其是用户级安装)会放在用户目录或虚拟环境中。通过对比系统包列表和pip包列表,或检查包的安装路径,可以实现分类。


一、导出系统包管理器安装的Python包列表

根据你使用的发行版,执行对应命令:

Debian/Ubuntu(apt)

dpkg -l | grep -E 'python3-.+' | awk '{print $2}' | sed 's/python3-//' | tr '-' '_'

说明:过滤出系统安装的Python3包,将包名格式转换为pip通用的下划线形式(如python3-requests转成requests)

RHEL/CentOS/Fedora(yum/dnf)

dnf list installed | grep -E 'python3-.+' | awk '{print $1}' | sed 's/python3-//' | tr '-' '_'

Arch Linux(pacman)

pacman -Q | grep -E 'python-.+' | awk '{print $1}' | sed 's/python-//' | tr '-' '_'

可将结果保存到文件方便后续对比:

# 以Debian/Ubuntu为例
dpkg -l | grep -E 'python3-.+' | awk '{print $2}' | sed 's/python3-//' | tr '-' '_' > sys_pkgs.txt

二、导出pip管理的包列表

获取所有pip安装的包名(不含版本号):

pip list --format=freeze | cut -d'=' -f1 > pip_pkgs.txt

如果只想看用户级pip安装的包(这类包肯定不是系统包管理器安装的),直接执行:

pip freeze --user

三、对比列表实现分类

1. 仅通过pip安装的包

grep -vxFf sys_pkgs.txt pip_pkgs.txt

说明:从pip包列表中剔除系统包管理器安装的包,剩余就是纯pip安装的包

2. 仅通过系统包管理器安装的包

grep -vxFf pip_pkgs.txt sys_pkgs.txt

说明:从系统包列表中剔除pip管理的包,剩余就是纯系统安装的包


补充:通过安装路径判断单个包

若想确认某个包的来源,执行:

pip show <包名>

查看输出中的Location字段:

  • 若路径包含/usr/lib/pythonX.X/site-packages(X.X为Python版本),大概率是系统包管理器安装的;
  • 若路径包含~/.local/lib/pythonX.X/site-packages或虚拟环境路径,则是pip安装的。

内容的提问来源于stack exchange,提问作者yananet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:00:53