如何查看python安装了哪些模块,如何获取本地安装的Python模块列表?

I would like to get a list of Python modules, which are in my Python installation (UNIX server).

How can you get a list of Python modules installed in your computer?

解决方案

Solution

Do not use with pip > 10.0!

My 50 cents for getting a pip freeze-like list from a Python script:

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)

As a (too long) one liner:

sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])

Giving:

['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']

Scope

This solution applies to the system scope or to a virtual environment scope, and covers packages installed by setuptools, pip and (god forbid) easy_install.

My use case

I added the result of this call to my flask server, so when I call it with http://example.com/exampleServer/environment I get the list of packages installed on the server's virtualenv. It makes debugging a whole lot easier.

Caveats

I have noticed a strange behaviour of this technique - when the Python interpreter is invoked in the same directory as a setup.py file, it does not list the package installed by setup.py.

Steps to reproduce:

Create a virtual environment

$ cd /tmp

$ virtualenv test_env

New python executable in test_env/bin/python

Installing setuptools, pip...done.

$ source test_env/bin/activate

(test_env) $

Clone a git repo with 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.

We have behave's setup.py in /tmp/behave:

(test_env) $ ls /tmp/behave/setup.py

/tmp/behave/setup.py

Install the python package from the git repo

(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

If we run the aforementioned solution from /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'

If we run the aforementioned solution from /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'

behave==1.2.5a1 is missing from the second example, because the working directory contains behave's setup.py file.

I could not find any reference to this issue in the documentation. Perhaps I shall open a bug for it.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值