有没有办法找到使用easy_install或pip安装的所有Python PyPI包?我的意思是,不包括发行版工具(在Debian上的apt-get)安装的所有东西。
当前回答
PIP冻结将输出已安装包及其版本的列表。它还允许您将这些包写入文件,以便稍后用于设置新环境。
https://pip.pypa.io/en/stable/reference/pip_freeze/#pip-freeze
其他回答
如果Debian在pip安装默认目标方面表现得像最近的Ubuntu版本,那么它非常简单:它安装到/usr/local/lib/而不是/usr/lib (apt默认目标)。检查https://askubuntu.com/questions/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747 # 259747
我是一个ArchLinux用户,当我尝试使用pip时,我遇到了同样的问题。以下是我在《Arch》中的解决方法。
find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs pacman -Qo | grep 'No package'
这里的关键是/usr/lib/python2.7/site-packages,这是pip安装到的目录,YMMV。qo是Arch的package管理器检查文件所有权的方法。当没有包拥有该文件时,没有包是它给出的返回的一部分:棘手的解决方法:我正在查询__init__.py,因为pacman -Qo在涉及到目录时有点无知:(
为了在其他发行版上做到这一点,你必须找出pip在哪里安装东西(只需sudo pip install一些东西),如何查询文件的所有权(Debian/Ubuntu的方法是dpkg -S),以及“没有包拥有该路径”的返回是什么(Debian/Ubuntu是没有路径找到匹配模式)。Debian/Ubuntu用户,注意:如果你给dpkg -S一个符号链接,它会失败。首先使用realpath解决它。是这样的:
find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | xargs dpkg -S 2>&1 | grep 'no path found'
Fedora用户可以尝试(谢谢@eddygeek):
find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'
pip. get_installed_distributors()将给出已安装包的列表
import pip
from os.path import join
for package in pip.get_installed_distributions():
print(package.location) # you can exclude packages that's in /usr/XXX
print(join(package.location, package._get_metadata("top_level.txt"))) # root directory of this package
开始:
$ pip list
列出所有软件包。一旦你找到你想要的包,使用:
$ pip show <package-name>
这将显示有关此包的详细信息,包括其文件夹。如果您已经知道包的名称,可以跳过第一部分
点击这里查看更多关于pip show的信息,点击这里查看更多关于pip list的信息。
例子:
$ pip show jupyter
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: jupyter@googlegroups.org
License: BSD
Location: /usr/local/lib/python2.7/site-packages
Requires: ipywidgets, nbconvert, notebook, jupyter-console, qtconsole, ipykernel
在保罗·伍尔考克的回答中,
pip freeze > requirements.txt
将在当前位置的活动环境中创建一个包含所有已安装包和已安装版本号的需求文件。运行
pip install -r requirements.txt
将安装需求文件中指定的包。
从pip的1.3版本开始,您现在可以使用pip list
它有一些有用的选项,包括显示过期包的能力。下面是文档:https://pip.pypa.io/en/latest/reference/pip_list/
推荐文章
- python:将脚本工作目录更改为脚本自己的目录
- 如何以编程方式获取python.exe位置?
- 如何跳过循环中的迭代?
- 使用Pandas为字符串列中的每个值添加字符串前缀
- ImportError:没有名为matplotlib.pyplot的模块
- 在python中遍历对象属性
- 如何在Python中使用方法重载?
- 在Python中提取文件路径(目录)的一部分
- 如何安装没有根访问权限的python模块?
- 尝试模拟datetime.date.today(),但不工作
- 将行添加到数组
- 如何在Python中直接获得字典键作为变量(而不是通过从值搜索)?
- Python:为什么functools。部分有必要吗?
- 如何用python timeit对代码段进行性能测试?
- Python迭代器中的has_next ?