如何获取本地安装的Python模块列表?

Léo*_* 준영 934 python module pip

我想获得一个Python模块列表,这些模块在我的Python安装(UNIX服务器)中.

如何获得计算机中安装的Python模块列表?

Chr*_*heD 981

help('modules')
Run Code Online (Sandbox Code Playgroud)

在Python shell /提示符下.

  • 来自shell的`pydoc modules`应该可以工作. (129认同)
  • 给我一个段错误! (35认同)
  • `python -c '帮助(“模块”)'` (13认同)
  • @dF`pydoc modules`有效.你应该提交它作为答案. (10认同)
  • nobar,zanbri,@ Joe Frambach:在Ubuntu上?这里描述了一个错误:https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/896836 (3认同)
  • 也不适用于Enthought Python Distribution. (3认同)
  • 我如何获得有关模块安装位置以及当前版本的更多信息? (2认同)

Ada*_*tan 578

pip freeze从Python脚本中获取类似列表的50美分:

import pip
installed_packages = pip.get_installed_distributions()
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
     for i in installed_packages])
print(installed_packages_list)
Run Code Online (Sandbox Code Playgroud)

作为(太长)一个班轮:

sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
Run Code Online (Sandbox Code Playgroud)

赠送:

['behave==1.2.4', 'enum34==1.0', 'flask==0.10.1', 'itsdangerous==0.24', 
 'jinja2==2.7.2', 'jsonschema==2.3.0', 'markupsafe==0.23', 'nose==1.3.3', 
 'parse-type==0.3.4', 'parse==1.6.4', 'prettytable==0.7.2', 'requests==2.3.0',
 'six==1.6.1', 'vioozer-metadata==0.1', 'vioozer-users-server==0.1', 
 'werkzeug==0.9.4']
Run Code Online (Sandbox Code Playgroud)

范围

此解决方案适用于系统范围或虚拟环境范围,并涵盖由setuptools(pip上帝禁止)安装的软件包easy_install.

我的用例

我将这个调用的结果添加到我的烧瓶服务器,所以当我调用它时,http://example.com/exampleServer/environment我得到服务器的virtualenv上安装的软件包列表.它使调试变得更加容易.

注意事项

我注意到这种技术的奇怪行为 - 当Python解释器在与setup.py文件相同的目录中调用时,它不会列出安装的包setup.py.

重现步骤:

创建一个虚拟环境
$ cd /tmp
$ virtualenv test_env
New python executable in test_env/bin/python
Installing setuptools, pip...done.
$ source test_env/bin/activate
(test_env) $ 
Run Code Online (Sandbox Code Playgroud) 克隆一个git repo setup.py
(test_env) $ git clone https://github.com/behave/behave.git
Cloning into 'behave'...
remote: Reusing existing pack: 4350, done.
remote: Total 4350 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4350/4350), 1.85 MiB | 418.00 KiB/s, done.
Resolving deltas: 100% (2388/2388), done.
Checking connectivity... done.
Run Code Online (Sandbox Code Playgroud)

我们必须表现的setup.py/tmp/behave:

(test_env) $ ls /tmp/behave/setup.py
/tmp/behave/setup.py
Run Code Online (Sandbox Code Playgroud) 从git repo安装python包
(test_env) $ cd /tmp/behave && pip install . 
running install
...
Installed /private/tmp/test_env/lib/python2.7/site-packages/enum34-1.0-py2.7.egg
Finished processing dependencies for behave==1.2.5a1
Run Code Online (Sandbox Code Playgroud)

如果我们运行上述解决方案 /tmp

>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['behave==1.2.5a1', 'enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()
'/private/tmp'
Run Code Online (Sandbox Code Playgroud)

如果我们运行上述解决方案 /tmp/behave

>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()
'/private/tmp/behave'
Run Code Online (Sandbox Code Playgroud)

behave==1.2.5a1在第二个示例中缺少,因为工作目录包含behavesetup.py文件.

我在文档中找不到任何对此问题的引用.也许我会为它打开一个错误.

  • 另一种选择:`import pkg_resources; pkg_resources.working_set中的d的installed_pa​​ckages = [(d.project_name,d.version)] (13认同)
  • 从第10点开始,这个答案将不再起作用.来自@ebolyen的评论显示了可行的替代命令.我得出了相同的结论,并在下面发布了完整的修订代码. (8认同)
  • 谢谢你的回答!我认为它更好地回答了这个问题,因为我要求"本地"安装Python模块.Pip冻结也并非总是如此.这更好 - 我想. (5认同)
  • @Masi刚刚添加了对该解决方案的警告的详细解释.这确实很奇怪. (3认同)
  • @AdamMatan实际上,如果你在多个目录中使用多个python安装和site-packages,这将失败.假设您的所有安装都已在同一个python实例上注册(通过pip/easy_install/setuptools),但是如果您已修改python路径以包含其他安装(或自定义库),则会失败.对于正常的工作流程,这可能很好,但它可能不健壮. (2认同)
  • @AdamMatan是的,整个目录可以手动添加到$ PYTHONPATH(或等效的sys.path),这个方法永远不会注意到它们.在干净的设置中,这可能不会发生,但我的工作有严格的权限限制,因此我们很多人使用专有库和"自定义环境"的"规范环境"混搭运行,我们拥有完整的权限.当我在另一个环境包上测试你的方法时,没有显示出来. (2认同)
  • 在最新版本的pip中,这将不起作用,并产生一条错误消息,提示“ AttributeError:模块'pip'没有属性'get_installed_distributions'”。 (2认同)

chi*_*gsy 271

现在,我尝试了这些方法,并且我得到了所宣传的内容:所有模块.

唉,你真的不太关心stdlib,你知道你用python安装得到了什么.

真的,我想要安装的东西.

实际上,令人惊讶的是,工作得很好的是:

pip freeze
Run Code Online (Sandbox Code Playgroud)

返回的是:

Fabric==0.9.3
apache-libcloud==0.4.0
bzr==2.3b4
distribute==0.6.14
docutils==0.7
greenlet==0.3.1
ipython==0.10.1
iterpipes==0.4
libxml2-python==2.6.21
Run Code Online (Sandbox Code Playgroud)

我说"令人惊讶",因为软件包安装工具是人们期望找到这个功能的确切位置,虽然不是名为'freeze',但python包装是如此奇怪,我很惊讶这个工具是有道理的.Pip 0.8.2,Python 2.7.

  • 从pip 1.3开始,有[list](http://www.pip-installer.org/en/latest/usage.html#pip-list)命令. (6认同)
  • 我想这个名字背后的想法是你得到一个现在安装的"冻结"快照,你可以稍后反馈到pip以获得在不同环境中安装的完全相同的模块. (4认同)
  • 在Windows中有一个等效命令吗? (3认同)

Joh*_*web 87

  • ipython你可以输入" importTab".

  • 在标准Python解释器中,您可以键入" help('modules')".

  • 在命令行,您可以使用.pydoc modules

  • 在脚本中,调用pkgutil.iter_modules().

  • `pkgutil.iter_modules()`工作,上面的pip解决方案没有列出所有包,只是通过pip安装的包. (5认同)
  • 真棒!我认为他们已经改进了文档,因为提出了问题.**pydoc模块垃圾邮件**在模块文档中搜索垃圾邮件.最后一点似乎为您提供了使用该模块的充分信息.@metaperture请举例说明如何通过**pkgutil.iter_modules()**列出所有已安装的本地模块(不是stlib的大量stlib by help('modules')). (2认同)
  • @LéoLéopoldHertz준영尝试以下代码段:`python -c'import pkgutil; print [x [1] for list(pkgutil.iter_modules())]中的x。它应该将所有模块名称转储为一个很大的Python列表。x [1]位用于从p​​kgutil.iter_modules()生成的元组中抽取模块名称。 (2认同)

Bry*_*yce 85

从pip 1.3版开始,您就可以访问:

pip list
Run Code Online (Sandbox Code Playgroud)

这似乎是"pip冻结"的语法糖.它将列出特定于您的安装或virtualenv的所有模块及其版本号.不幸的是,它没有显示任何模块的当前版本号,也没有洗碗或擦鞋.

  • 还有`pip list --local`用于区分`virtualenv`和全球网站包,[此处讨论](http://stackoverflow.com/a/24661035/1959808). (4认同)
  • 迄今为止最好的。它还检索版本。 (2认同)

Dan*_*ans 68

我只是用它来查看当前使用的模块:

import sys as s
s.modules.keys()
Run Code Online (Sandbox Code Playgroud)

它显示了在python上运行的所有模块.

对于所有内置模块,请使用:

s.modules
Run Code Online (Sandbox Code Playgroud)

哪个是包含所有模块和导入对象的dict.

  • Upvoted,因为这是唯一可以在没有安装"pydoc"和"pip"的约束系统上工作的方法(在我的情况下是一个NAS). (4认同)
  • # 导入 sys "import sys as s" 后,您可以打印:print sys.modules.keys() (2认同)

小智 64

在正常的shell中使用

pydoc modules
Run Code Online (Sandbox Code Playgroud)

  • @ DavidA.Gray刚刚在具有Python 3的Windows机器上尝试了此操作,并且实际上可以正常工作。使用python Windows启动器,您可以在cmd或Powershell中执行py -m pydoc modules。 (2认同)

Big*_*_Tx 34

从第10点开始,接受的答案将不再适用.开发团队已删除对get_installed_distributions例程的访问权限.在setuptools做同样的事情中还有一个替代功能.这是与pip 10一起使用的替代版本:

import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
     for i in installed_packages])
print(installed_packages_list)
Run Code Online (Sandbox Code Playgroud)

如果它在以前版本的pip中有效或不可用,请告诉我.

  • 我一直在寻找这个解决方案并绞尽脑汁试图找出 pkg_resources。如果我可以不止一次投票,我会的。谢谢你,@Big_Al_Tx!更新:除了......当我在我的虚拟环境中执行“pip freeze”并将其与此输出进行比较时,会丢失一些包。关于为什么会/会发生的任何想法? (2认同)

jab*_*cky 30

无论 Pip 版本如何都有效

在您的 Python 编辑器或 IPython 中运行以下命令:

import pkg_resources
installed_packages = {d.project_name: d.version for d in pkg_resources.working_set}
print(installed_packages)
Run Code Online (Sandbox Code Playgroud)

阅读其他答案并将这个组合组合在一起,这是Python 中最快和最简单的。

查找特定的包

方便地,您可以轻松地从您的 dict 中获取项目,即

installed_packages['pandas'] >> '1.16.4'

很好地使用点子列表

!pip list如果在那里工作,将在您的 jupyter 笔记本内运行,简化“快速检查”结合其他实用程序,如 grep(如果您已安装) pip list | grep pandas 将获得您当前的熊猫版本


小智 26

如果我们需要在Python shell中列出已安装的软件包,我们可以help按如下方式使用该命令

>>help('modules package')
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 21

我通常pip list用来获取包列表(带有版本).

当然,这也适用于虚拟环境.


小智 17

这将有助于

在终端或 IPython 中,键入:

help('modules')
Run Code Online (Sandbox Code Playgroud)

然后

In [1]: import                      #import press-TAB
Display all 631 possibilities? (y or n)
ANSI                   audiodev               markupbase
AptUrl                 audioop                markupsafe
ArgImagePlugin         avahi                  marshal
BaseHTTPServer         axi                    math
Bastion                base64                 md5
BdfFontFile            bdb                    mhlib
BmpImagePlugin         binascii               mimetools
BufrStubImagePlugin    binhex                 mimetypes
CDDB                   bisect                 mimify
CDROM                  bonobo                 mmap
CGIHTTPServer          brlapi                 mmkeys
Canvas                 bsddb                  modulefinder
CommandNotFound        butterfly              multifile
ConfigParser           bz2                    multiprocessing
ContainerIO            cPickle                musicbrainz2
Cookie                 cProfile               mutagen
Crypto                 cStringIO              mutex
CurImagePlugin         cairo                  mx
DLFCN                  calendar               netrc
DcxImagePlugin         cdrom                  new
Dialog                 cgi                    nis
DiscID                 cgitb                  nntplib
DistUpgrade            checkbox               ntpath
Run Code Online (Sandbox Code Playgroud)


小智 12

使用pkgutil.iter_modules进行非常简单的搜索

from pkgutil import iter_modules
a=iter_modules()
while True:
    try: x=a.next()
    except: break
    if 'searchstr' in x[1]: print x[1]
Run Code Online (Sandbox Code Playgroud)

  • 有什么理由使用 while 而不是 for 循环?我使用 `for m in iter_modules()` 编写,它也确实有效。 (2认同)

Qia*_*iau 12

我在OS X上遇到了一个自定义安装的python 2.7.它需要X11来列出安装的模块(使用help和pydoc).

为了能够在不安装X11的情况下列出所有模块,我将pydoc作为http-server运行,即:

pydoc -p 12345
Run Code Online (Sandbox Code Playgroud)

然后可以指示Safari http://localhost:12345/查看所有模块.


Sau*_*abh 11

在Windows上,在cmd中输入

c:\python\libs>python -m pip freeze
Run Code Online (Sandbox Code Playgroud)


Man*_*era 10

我正在比较五种检索已安装“模块”的方法,所有这些方法我都在这个线程中看到过

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
迭代模块帮助(“模块”)内置模块名称点值列表工作集
包括发行版\xe2\x9d\x8c\xe2\x9d\x8c\xe2\x9d\x8c\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f
包括模块(无内置)\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c\xe2\x9d\x8c\xe2\x9d\x8c
包括内置模块\xe2\x9d\x8c\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c\xe2\x9d\x8c
包括冷冻\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c\xe2\x9d\x8c\xe2\x9d\x8c
包括 venv\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f
包括全球\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f
包括可编辑的安装\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f
包括 PyCharm 助手\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c\xe2\x9d\x8c\xe2\x9d\x8c\xe2\x9d\x8c
降低大写字母\xe2\x9d\x8c\xe2\x9d\x8c\xe2\x9d\x8c\xe2\x9d\x8c\xe2\x9c\x94\xef\xb8\x8f
花费的时间(总共 665 个模块)53.7 毫秒1.03秒577纳秒284 毫秒36.2 微秒
\n

概括

\n
    \n
  • pip listworking_set适用于发行版,而不是模块。
  • \n
  • iter_moduleshelp("modules")很相似,最大的区别就是iter_modules不包含内置。
  • \n
  • pip listworking_set非常相似,唯一的区别是working_set所有大写字母都变小了。
  • \n
  • 内置模块仅包含在help("modules")和中builtin_module_names
  • \n
\n

相关注意事项

\n
    \n
  • 发行版、包和模块通常具有相同的名称,因此很容易将其中一个混淆。
  • \n
  • importlib.util.find_spec用于模块并且区分大小写。
  • \n
  • sys.modules仅列出导入的模块。
  • \n
\n

发行版

\n

我说的是分发而不是打包,因为我认为这会减少误解。一个发行版/包中可以包含多个包/模块。

\n

已安装的发行版并不总是可以用相同的名称导入。例如pip install Pillow使用 导入import PIL。有时,一个发行版甚至可以导入多个模块。

\n

方法(每列按顺序)

\n

迭代模块

\n
import pkgutil\n{module.name for module in pkgutil.iter_modules()}\n
Run Code Online (Sandbox Code Playgroud)\n

help("modules") (仅在终端中打印)

\n
help("modules")\n
Run Code Online (Sandbox Code Playgroud)\n

内置模块名称

\n
import sys\nset(sys.builtin_module_names)\n
Run Code Online (Sandbox Code Playgroud)\n

pip list (仅在终端中打印)

\n

pip list在终端

\n

工作集

\n
import pkg_resources\n{pkg.key for pkg in pkg_resources.working_set}\n
Run Code Online (Sandbox Code Playgroud)\n

结论

\n
    \n
  • 对于终端,我推荐help("modules")python -c "help(\'modules\')"。\n\n
  • \n
  • 对于以编程方式,我推荐iter_modules+ builtin_module_names。\n\n
  • \n
\n
import sys\nimport pkgutil\n\ndef get_installed_modules_names():\n    iter_modules = {module.name for module in pkgutil.iter_modules()}\n    builtin = sys.builtin_module_names\n    return set.union(iter_modules, builtin)\n
Run Code Online (Sandbox Code Playgroud)\n


Dan*_*l F 9

这是受到亚当·马坦(Adam Matan)的回答(公认的)的启发:

import tabulate
try:
  from pip import get_installed_distributions
except:
  from pip._internal.utils.misc import get_installed_distributions

tabpackages = []
for _, package in sorted([('%s %s' % (i.location, i.key), i) for i in get_installed_distributions()]):
  tabpackages.append([package.location, package.key, package.version])

print(tabulate.tabulate(tabpackages))
Run Code Online (Sandbox Code Playgroud)

然后以以下形式打印出表格

19:33 pi@rpi-v3 [iot-wifi-2] ~/python$ python installed_packages.py
-------------------------------------------  --------------  ------
/home/pi/.local/lib/python2.7/site-packages  enum-compat     0.0.2
/home/pi/.local/lib/python2.7/site-packages  enum34          1.1.6
/home/pi/.local/lib/python2.7/site-packages  pexpect         4.2.1
/home/pi/.local/lib/python2.7/site-packages  ptyprocess      0.5.2
/home/pi/.local/lib/python2.7/site-packages  pygatt          3.2.0
/home/pi/.local/lib/python2.7/site-packages  pyserial        3.4
/usr/local/lib/python2.7/dist-packages       bluepy          1.1.1
/usr/local/lib/python2.7/dist-packages       click           6.7
/usr/local/lib/python2.7/dist-packages       click-datetime  0.2
/usr/local/lib/python2.7/dist-packages       construct       2.8.21
/usr/local/lib/python2.7/dist-packages       pyaudio         0.2.11
/usr/local/lib/python2.7/dist-packages       tabulate        0.8.2
-------------------------------------------  --------------  ------
Run Code Online (Sandbox Code Playgroud)

这样一来,您便可以轻松辨别使用和不安装时安装的软件包sudo


撇开笔记:我注意到,当我一次安装一个数据包而一次安装一次数据包时sudo,一个优先,因此不会列出另一个数据包(仅显示一个位置)。我相信只会列出本地目录中的一个。这可以改善。

  • 不。不建议这样做,请参见此处:https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program (2认同)
  • @sinoroc 谢谢你指出这一点。第 1 点到第 3 点似乎不适用于此解决方案,因为此脚本的唯一目的是使用“pip”一次然后退出。行为可能改变似乎是一个更大的问题。 (2认同)

jds*_*ojr 8

除了使用pip freeze我一直在我的虚拟环境中安装蛋黄.


yeg*_*gle 7

  1. 获取所有可用模块,运行 sys.modules
  2. 要获得所有已安装的模块(阅读:安装者pip),您可以查看pip.get_installed_distributions()

为了第二个目的,示例代码:

import pip
for package in pip.get_installed_distributions():
    name = package.project_name # SQLAlchemy, Django, Flask-OAuthlib
    key = package.key # sqlalchemy, django, flask-oauthlib
    module_name = package._get_metadata("top_level.txt") # sqlalchemy, django, flask_oauthlib
    location = package.location # virtualenv lib directory etc.
    version = package.version # version number
Run Code Online (Sandbox Code Playgroud)


PAD*_*MKO 7

此解决方案主要基于模块importlib,pkgutil并与CPython 3.4和CPython 3.5一起使用,但不支持CPython 2.


说明

  1. sys.builtin_module_names- 命名所有内置模块(在这里查看我的答案)
  2. pkgutil.iter_modules() - 返回有关所有可用模块的信息
  3. importlib.util.find_spec() - 返回有关导入模块的信息(如果存在)
  4. BuiltinImporter- 内置模块的导入器(docs)
  5. SourceFileLoader- 标准Python模块的导入程序(默认情况下具有扩展名*.py)(docs)
  6. ExtensionFileLoader- 作为共享库的模块的导入程序(在C或C++上编写)

完整代码

import sys
import os
import shutil
import pkgutil
import importlib
import collections

if sys.version_info.major == 2:
    raise NotImplementedError('CPython 2 is not supported yet')


def main():

    # name this file (module)
    this_module_name = os.path.basename(__file__).rsplit('.')[0]

    # dict for loaders with their modules
    loaders = collections.OrderedDict()

    # names`s of build-in modules
    for module_name in sys.builtin_module_names:

        # find an information about a module by name
        module = importlib.util.find_spec(module_name)

        # add a key about a loader in the dict, if not exists yet
        if module.loader not in loaders:
            loaders[module.loader] = []

        # add a name and a location about imported module in the dict
        loaders[module.loader].append((module.name, module.origin))

    # all available non-build-in modules
    for module_name in pkgutil.iter_modules():

        # ignore this module
        if this_module_name == module_name[1]:
            continue

        # find an information about a module by name
        module = importlib.util.find_spec(module_name[1])

        # add a key about a loader in the dict, if not exists yet
        loader = type(module.loader)
        if loader not in loaders:
            loaders[loader] = []

        # add a name and a location about imported module in the dict
        loaders[loader].append((module.name, module.origin))

    # pretty print
    line = '-' * shutil.get_terminal_size().columns
    for loader, modules in loaders.items():
        print('{0}\n{1}: {2}\n{0}'.format(line, len(modules), loader))
        for module in modules:
            print('{0:30} | {1}'.format(module[0], module[1]))


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

用法

对于CPython3.5(截断)

$ python3.5 python_modules_info.py 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
30: <class '_frozen_importlib.BuiltinImporter'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_ast                           | built-in
_codecs                        | built-in
_collections                   | built-in
_functools                     | built-in
_imp                           | None
_io                            | built-in
_locale                        | built-in
_operator                      | built-in
_signal                        | built-in
_sre                           | built-in
_stat                          | built-in
_string                        | built-in
_symtable                      | built-in
_thread                        | built-in
(****************************truncated*******************************)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
227: <class '_frozen_importlib_external.SourceFileLoader'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__future__                     | /usr/local/lib/python3.5/__future__.py
_bootlocale                    | /usr/local/lib/python3.5/_bootlocale.py
_collections_abc               | /usr/local/lib/python3.5/_collections_abc.py
_compat_pickle                 | /usr/local/lib/python3.5/_compat_pickle.py
_compression                   | /usr/local/lib/python3.5/_compression.py
_dummy_thread                  | /usr/local/lib/python3.5/_dummy_thread.py
_markupbase                    | /usr/local/lib/python3.5/_markupbase.py
_osx_support                   | /usr/local/lib/python3.5/_osx_support.py
_pydecimal                     | /usr/local/lib/python3.5/_pydecimal.py
_pyio                          | /usr/local/lib/python3.5/_pyio.py
_sitebuiltins                  | /usr/local/lib/python3.5/_sitebuiltins.py
(****************************truncated*******************************)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
64: <class '_frozen_importlib_external.ExtensionFileLoader'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_bisect                        | /usr/local/lib/python3.5/lib-dynload/_bisect.cpython-35m-x86_64-linux-gnu.so
_bz2                           | /usr/local/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so
_codecs_cn                     | /usr/local/lib/python3.5/lib-dynload/_codecs_cn.cpython-35m-x86_64-linux-gnu.so
_codecs_hk                     | /usr/local/lib/python3.5/lib-dynload/_codecs_hk.cpython-35m-x86_64-linux-gnu.so
_codecs_iso2022                | /usr/local/lib/python3.5/lib-dynload/_codecs_iso2022.cpython-35m-x86_64-linux-gnu.so
(****************************truncated*******************************)
Run Code Online (Sandbox Code Playgroud)

对于CPython3.4(截断)

$ python3.4 python_modules_info.py
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
54: <class '_frozen_importlib.BuiltinImporter'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_ast                           | built-in
_bisect                        | built-in
_codecs                        | built-in
_collections                   | built-in
_datetime                      | built-in
_elementtree                   | built-in
_functools                     | built-in
_heapq                         | built-in
_imp                           | None
_io                            | built-in
_locale                        | built-in
_md5                           | built-in
_operator                      | built-in
_pickle                        | built-in
_posixsubprocess               | built-in
_random                        | built-in
(****************************truncated*******************************)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
246: <class '_frozen_importlib.SourceFileLoader'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__future__                     | /usr/lib/python3.4/__future__.py
_bootlocale                    | /usr/lib/python3.4/_bootlocale.py
_collections_abc               | /usr/lib/python3.4/_collections_abc.py
_compat_pickle                 | /usr/lib/python3.4/_compat_pickle.py
_dummy_thread                  | /usr/lib/python3.4/_dummy_thread.py
_markupbase                    | /usr/lib/python3.4/_markupbase.py
_osx_support                   | /usr/lib/python3.4/_osx_support.py
_pyio                          | /usr/lib/python3.4/_pyio.py
(****************************truncated*******************************)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
44: <class '_frozen_importlib.ExtensionFileLoader'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_bz2                           | /usr/lib/python3.4/lib-dynload/_bz2.cpython-34m-x86_64-linux-gnu.so
_codecs_cn                     | /usr/lib/python3.4/lib-dynload/_codecs_cn.cpython-34m-x86_64-linux-gnu.so
_codecs_hk                     | /usr/lib/python3.4/lib-dynload/_codecs_hk.cpython-34m-x86_64-linux-gnu.so
_codecs_iso2022                | /usr/lib/python3.4/lib-dynload/_codecs_iso2022.cpython-34m-x86_64-linux-gnu.so
_codecs_jp                     | /usr/lib/python3.4/lib-dynload/_codecs_jp.cpython-34m-x86_64-linux-gnu.so
_codecs_kr                     | /usr/lib/python3.4/lib-dynload/_codecs_kr.cpython-34m-x86_64-linux-gnu.so
_codecs_tw                     | /usr/lib/python3.4/lib-dynload/_codecs_tw.cpython-34m-x86_64-linux-gnu.so
_crypt                         | /usr/lib/python3.4/lib-dynload/_crypt.cpython-34m-x86_64-linux-gnu.so
(****************************truncated*******************************)
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您安装了anaconda python发行版,则也可以使用

$conda list
Run Code Online (Sandbox Code Playgroud)

除了上述解决方案。


Pav*_*pta 5

pip freeze可以完成所有工作,查找包。然而,我们可以简单地编写以下命令来列出 Python 包所在的所有路径。

>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Run Code Online (Sandbox Code Playgroud)


not*_*bit 5

有很多方法可以给猫剥皮。

  • 最简单的方法是pydoc直接从 shell使用该函数:
    pydoc modules

  • 但要了解更多信息,请使用名为pip-date的工具,它还会告诉您安装日期。
    pip install pip-date


在此处输入图片说明


归档时间:

查看次数:

1174577 次

最近记录:

6 年 前