Как я могу получить список локально установленных модулей Python? - PullRequest
867 голосов
/ 11 апреля 2009

Я хотел бы получить список модулей Python, которые находятся в моей установке Python (сервер UNIX).

Как получить список модулей Python, установленных на вашем компьютере?

Ответы [ 23 ]

3 голосов
/ 28 января 2019

Есть много способов снять кожу с кошки.

  • Самый простой способ - использовать функцию pydoc непосредственно из оболочки с помощью:
    pydoc modules

  • Но для получения дополнительной информации используйте инструмент под названием pip-date , в котором также указаны даты установки.
    pip install pip-date


enter image description here

2 голосов
/ 01 марта 2019

Мне нужно было найти конкретную версию пакетов, доступных по умолчанию в AWS Lambda. Я сделал это с коллажем идей с этой страницы. Я делюсь этим для потомков.

import pkgutil

__version__ = '0.1.1'

def get_ver(name):
    try:
        return str(__import__(name).__version__)
    except:
        return None

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': [{
                   'path': m.module_finder.path,
                   'name': m.name,
                   'version': get_ver(m.name),
                 } for m in list(pkgutil.iter_modules())
                 #if m.module_finder.path == "/var/runtime" # Uncomment this if you only care about a certain path
                ],
    }

Что я обнаружил, так это то, что предоставляемая библиотека boto3 устарела, и я не виноват, что мой код не работает. Мне просто нужно было добавить boto3 и botocore в мой проект. Но без этого я бы бился головой, думая, что мой код плохой.

{
  "statusCode": 200,
  "body": [
    {
      "path": "/var/task",
      "name": "lambda_function",
      "version": "0.1.1"
    },
    {
      "path": "/var/runtime",
      "name": "bootstrap",
      "version": null
    },
    {
      "path": "/var/runtime",
      "name": "boto3",
      "version": "1.9.42"
    },
    {
      "path": "/var/runtime",
      "name": "botocore",
      "version": "1.12.42"
    },
    {
      "path": "/var/runtime",
      "name": "dateutil",
      "version": "2.7.5"
    },
    {
      "path": "/var/runtime",
      "name": "docutils",
      "version": "0.14"
    },
    {
      "path": "/var/runtime",
      "name": "jmespath",
      "version": "0.9.3"
    },
    {
      "path": "/var/runtime",
      "name": "lambda_runtime_client",
      "version": null
    },
    {
      "path": "/var/runtime",
      "name": "lambda_runtime_exception",
      "version": null
    },
    {
      "path": "/var/runtime",
      "name": "lambda_runtime_marshaller",
      "version": null
    },
    {
      "path": "/var/runtime",
      "name": "s3transfer",
      "version": "0.1.13"
    },
    {
      "path": "/var/runtime",
      "name": "six",
      "version": "1.11.0"
    },
    {
      "path": "/var/runtime",
      "name": "test_bootstrap",
      "version": null
    },
    {
      "path": "/var/runtime",
      "name": "test_lambda_runtime_client",
      "version": null
    },
    {
      "path": "/var/runtime",
      "name": "test_lambda_runtime_marshaller",
      "version": null
    },
    {
      "path": "/var/runtime",
      "name": "urllib3",
      "version": "1.24.1"
    },
    {
      "path": "/var/lang/lib/python3.7",
      "name": "__future__",
      "version": null
    },
...

То, что я обнаружил, также отличалось от того, что они официально публикуют . На момент написания этого:

  • Операционная система - Amazon Linux
  • AMI - amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2
  • ядро ​​Linux - 4.14.77-70.59.amzn1.x86_64
  • AWS SDK для JavaScript - 2.290.0 \
  • SDK для Python (Boto 3) - 3-1.7.74 botocore-1.10.74
0 голосов
/ 11 апреля 2009

из скорлупы

ls site-packages

Если это не поможет, вы можете сделать это.

import sys
import os
for p in sys.path:
    print os.listdir( p )

И посмотри, что это дает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...