如何列出在Python3中使用pip安装的第三方项目(库等)

如何列出在Python3中使用pip安装的第三方项目(库等),python,python-3.x,pip,python-3.8,python-packaging,Python,Python 3.x,Pip,Python 3.8,Python Packaging,是否有任何Python脚本或Python代码可以为我提供已安装的Python项目列表(分发包:库等)(例如,使用pip),以便我可以循环遍历它们 它应该在python3.x中工作pip list命令将为您提供所有软件包及其安装版本的列表: Package Version ----------------------------- ------------ ailment 9.0.4663 alabaster

是否有任何Python脚本或Python代码可以为我提供已安装的Python项目列表(分发包:库等)(例如,使用pip),以便我可以循环遍历它们


它应该在
python3.x

中工作
pip list
命令将为您提供所有软件包及其安装版本的列表:

Package                       Version
----------------------------- ------------
ailment                       9.0.4663
alabaster                     0.7.12
angr                          9.0.4663
appdirs                       1.4.4
apsw                          3.33.0.post1
... more lines that I cut off
如果要在python中循环执行此操作,则可以使用捕获输出,然后执行一些字符串处理:

导入子流程
packages=子进程。检查_输出([“python3”、“-m”、“pip”、“list”])。解码(“utf8”)
package_lines=map(str.split,packages.splitlines()[2:]
对于软件包名称,软件包行中的版本:
打印(f“包{Package_name}有版本{version}”)

使用
pip list
命令将为您提供所有软件包及其安装版本的列表:

Package                       Version
----------------------------- ------------
ailment                       9.0.4663
alabaster                     0.7.12
angr                          9.0.4663
appdirs                       1.4.4
apsw                          3.33.0.post1
... more lines that I cut off
如果要在python中循环执行此操作,则可以使用捕获输出,然后执行一些字符串处理:

导入子流程
packages=子进程。检查_输出([“python3”、“-m”、“pip”、“list”])。解码(“utf8”)
package_lines=map(str.split,packages.splitlines()[2:]
对于软件包名称,软件包行中的版本:
打印(f“包{Package_name}有版本{version}”)
您可以使用

pip freeze 
在终端上列出所有已安装的python模块

如果您希望在python程序中将这些模块作为列表,那么可以使用pkg_资源模块

你可以用

pip freeze 
在终端上列出所有已安装的python模块

如果您希望在python程序中将这些模块作为列表,那么可以使用pkg_资源模块


您可以使用python中的pip库轻松实现这一点:

try:
    from pip._internal.operations import freeze
except ImportError:  # in case pip version < 10.0
    from pip.operations import freeze
modules = list(freeze.freeze())

我已经把它缩短了,因为有很多适合我的东西。

您可以使用python中的pip库轻松地做到这一点:

try:
    from pip._internal.operations import freeze
except ImportError:  # in case pip version < 10.0
    from pip.operations import freeze
modules = list(freeze.freeze())

我把它缩短了,因为有很多东西需要我去做。

在Python的标准库中有一种非常简单直接的方法可以直接完成这项工作。使用

例如:

#/usr/bin/env蟒蛇3
导入importlib.metadata
对于importlib.metadata.distributions()中的分发:
打印(distribution.metadata['Name'],distribution.metadata['Version'])

这将适用于Python3.8+。对于早于3.8的版本,我建议使用来获得完全相同的功能。

有一种非常简单直接的方法可以直接在Python的标准库中实现这一点。使用

例如:

#/usr/bin/env蟒蛇3
导入importlib.metadata
对于importlib.metadata.distributions()中的分发:
打印(distribution.metadata['Name'],distribution.metadata['Version'])

这将适用于Python3.8+。对于3.8以上的版本,我建议使用以获得完全相同的功能。

我找到了这个答案,我想这是你的问题检查一下:这个答案是否回答了你的问题?我找到了这个答案,我想这是你的问题,看看这个:这个回答了你的问题吗?pip并不打算用作库(请参阅)。这不是一个好的建议。有更好的方法可以做到这一点。使用是当前的最佳建议。pip不打算用作库(请参阅)。这不是一个好的建议。有更好的方法可以做到这一点。使用是当前最好的建议。