查看python本地安装模块_如何获取本地安装的Python模块的列表?

我的50美分从Python脚本获取点冻结类似的列表:

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)

作为(太长)一个衬里:

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

给予:

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

范围

此解决方案适用于系统范围或虚拟环境范围,并涵盖由setuptools,pip和(god forbid)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) $

使用setup.py克隆git repo

(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.

我们在/ tmp / behave中有表现的setup.py:

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

/tmp/behave/setup.py

从git repo安装python包

(test_env) $ cd /tmp/behave && python setup.py 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

如果我们从/ 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'

如果我们从/ 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从第二个示例中丢失,因为工作目录包含behave的setup.py文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值