كيف يمكنني الحصول على قائمة وحدات بيثون المثبتة محليا؟

StackOverflow https://stackoverflow.com/questions/739993

  •  09-09-2019
  •  | 
  •  

سؤال

أرغب في الحصول على قائمة من وحدات Python، والتي توجد في تثبيت Python الخاص بي (خادم UNIX).

كيف يمكنك الحصول على قائمة من وحدات Python المثبتة في جهاز الكمبيوتر الخاص بك؟

هل كانت مفيدة؟

المحلول

المحلول

لا تستخدم مع PIP> 10.0!

بلدي 50 سنت للحصول على pip freeze- مثل قائمة من النصي الثعبان:

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 و (لا سمح الله) easy_install.

حالة استخدام بلدي

أضفت نتيجة هذه المكالمة إلى خادم القارورة الخاص بي، لذلك عندما أسميها http://example.com/exampleServer/environment أحصل على قائمة الحزم المثبتة على Virtualenv الخادم. يجعل تصحيح أسهل بكثير.

تحفظات

لقد لاحظت سلوكا غريبا لهذه التقنية - عندما يتم استدعاء مترجم الثعبان في نفس الدليل 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.
(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.

نحن نتصرف setup.py في /tmp/behave:

(test_env) $ ls /tmp/behave/setup.py
/tmp/behave/setup.py
تثبيت حزمة بيثون من repo git
(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

إذا قمنا بتشغيل الحل المذكور /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 مفقود من الأمثلة الثانية، لأن دليل العمل يحتوي behavesetup.py ملف.

لم أجد أي إشارة إلى هذه المشكلة في الوثائق. ربما سأفتح خطأ لذلك.

نصائح أخرى

help('modules')

في قذيفة بيثون / موجه.

الآن، هذه الأساليب حاولت نفسي، وحصلت على ما تم الإعلان عنه بالضبط: جميع الوحدات النمطية.

للأسف، أنت حقا لا تهتم كثيرا في Stdlib، أنت تعرف ما تحصل عليه مع تثبيت بيثون.

حقا، أريد الاشياء التي أنا المثبتة.

ما في الواقع، من المستغرب أن يعمل على ما يرام هو:

pip freeze

التي عاد:

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

أقول "بشكل مدهش" لأن أداة تثبيت الحزمة هي المكان الدقيق الذي يتوقعه المرء العثور على هذه الوظيفة، على الرغم من أنه ليس تحت اسم "تجميد" ولكن التعبئة والتغليف بيثون غريبة للغاية، وأنا أشعر بالغة أن هذه الأداة منطقية. PIP 0.8.2، بيثون 2.7.

  • في ipython يمكنك كتابة "importفاتورة غير مدفوعة".

  • في مترجم الثعبان القياسي، يمكنك كتابة "help('modules')".

  • في سطر الأوامر، يمكنك استخدام pydoc modules.

  • في النص، اتصل pkgutil.iter_modules().

منذ PIP الإصدار 1.3، لديك الوصول إلى:

pip list

الذي يبدو أن السكر النحوي ل "بيب تجميد". ستقوم بإدراج جميع الوحدات النمطية الخاصة بتثبيتك أو Virtualenv، إلى جانب أرقام الإصدار الخاصة بها. لسوء الحظ، لا يعرض رقم الإصدار الحالي من أي وحدة نمطية، ولا يغسل أطباقك أو تألق حذائك.

أنا فقط استخدم هذا لرؤية الوحدات المستخدمة حاليا:

import sys as s
s.modules.keys()

مما يدل على جميع الوحدات التي تعمل على ثعبانك.

لجميع الوحدات المدمجة استخدام:

s.modules

وهو محترف يحتوي على جميع الوحدات والاستيراد كائنات.

في قذيفة عادية فقط استخدام

pydoc modules

اعتبارا من PIP 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)

واسمحوا لي أن أعرف ما إذا كان سيتم أو لن تعمل في الإصدارات السابقة من PIP، أيضا.

إذا كنا نحتاج إلى سرد الحزم المثبتة في قذيفة بيثون، فيمكننا استخدام help الأمر كما يلي

>>help('modules package')

أنا عادة استخدام pip list للحصول على قائمة الحزم (مع الإصدار).

هذا يعمل في بيئة افتراضية أيضا، بالطبع. لإظهار ما هو مثبت في البيئة الافتراضية فقط (وليس الحزم العالمية)، استخدم pip list --local.

هنا وثائق تظهر كل المتاحة pip list خيارات، مع العديد من الأمثلة الجيدة.

البحث بسيط جدا باستخدام 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]

ركضت في مخصص مثبت Python 2.7 على نظام التشغيل X. إنه مطلوب X11 لإدراج الوحدات النمطية المثبتة (كلاهما باستخدام المساعدة و pydoc).

لتكون قادرا على سرد جميع الوحدات النمطية دون تثبيت X11 ركضت Pydoc كخادم HTTP، أي:

pydoc -p 12345

ثم من الممكن توجيه رحلات السفاري إلى http://localhost:12345/ لرؤية جميع الوحدات النمطية.

على ويندوز، أدخل هذا في CMD

c:\python\libs>python -m pip freeze

وكان هذا مستوحى من آدم ماتان إجابه (المقبول واحد):

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))

الذي يطبع بعد ذلك جدول في شكل

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

الذي يتيح لك بعد ذلك بسهولة تمييز الحزم التي قمت بتثبيتها sudo.


مذكرة جانبا: لقد لاحظت أنه عندما أقوم بتثبيت حزمة مرة واحدة عبر sudo ومرة واحدة دون، يأخذ المرء الأسبقية بحيث لا يتم إدراج المرء الآخر (موقع واحد فقط). أعتقد أنه يتم بعد ذلك إدراج واحد فقط في الدليل المحلي. هذا يمكن تحسينه.

بصرف النظر عن استخدام pip freeze لقد تم تثبيت صفار البيض في بيئاتي الافتراضية.

  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

هذا الحل أساسي بناء على الوحدات النمطية 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 - مستورد وحدات مدمجة (مستندات)
  5. SourceFileLoader - مستورد لنبلات بيثون القياسية (بشكل افتراضي لديه امتداد * .py) (مستندات)
  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()

الاستعمال

ل 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*******************************)

ل 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*******************************)

في حال كان لديك أناسوندا بايثون توزيع تثبيت، يمكنك أيضا استخدام

$conda list

بالإضافة إلى الحلول الموصوفة أعلاه.

بيب تجميد هل كل شيء العثور على الحزم ولكن يمكن للمرء ببساطة كتابة الأمر التالي لسرد جميع المسارات حيث توجد حزم بيثون.

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

هناك العديد من الأفكار، في البداية أفكر في هذين:

باص

سلبيات: غير مثبتة دائما

مساعدة ("وحدات")

سلبيات: الإخراج إلى وحدة التحكم؛ مع وحدات مكسورة (انظر Ubuntu ...) يمكن segfault

أحتاج إلى نهج سهل، باستخدام المكتبات الأساسية ومتوافقة مع Python 2.x القديم

وأرى النور: listModules.py.

مخفية في دليل مصدر الوثائق في 2.5 هو برنامج نصي صغير يسرد جميع الوحدات النمطية المتاحة لتثبيت Python.

الايجابيات:

يستخدم فقط Imp، SYS، OS، RE، الوقت

مصممة لتشغيل على python 1.5.2 والأحدث

رمز المصدر مضغوط حقا، حتى تتمكن من العبث بسهولة، على سبيل المثال لتمرير قائمة استثناء من وحدات عربات التي تجرها الدواب (لا تحاول استيرادها)

هناك العديد من الطرق إلى الجلد القط.

  • الطريقة الأكثر بسيطة هي استخدام pydoc وظيفة مباشرة من قذيفة مع:
    pydoc modules

  • ولكن لمزيد من المعلومات، استخدم الأداة التي تسمى تاريخ هذا أيضا اقول لك تواريخ التثبيت.
    pip install pip-date


enter image description here

جرب هذا

pip list

أو

pip freeze

كنت بحاجة للعثور على الإصدار المحدد من الحزم المتوفرة افتراضيا في 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 والبوتيكوري إلى مشروعي. ولكن بدون هذا كنت سأقاضي رأسي رأيي كان رمز بلدي كان سيئا.

{
  "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
    },
...

ما اكتشفته كان مختلفا أيضا عن ما ينشرون رسميا. وبعد في وقت كتابة هذا:

  • نظام التشغيل - أمازون لينكس
  • AMI - AMZN-AMI-HVM-2017.03.1.20170812-X86_64-GP2
  • Linux Kernel - 4.14.77-70.59.amzn1.x86_64
  • AWS SDK ل JavaScript - 2.290.0
  • SDK ل Python (بوتو 3) - 3-1.74 Botocore-1.10.74

لأي شخص يتساءل كيفية الاتصال pip list من برنامج Python، يمكنك استخدام ما يلي:

import pip
pip.main(['list])  # this will print all the packages

هذا سيساعد

في المحطة أو ipython، اكتب:

help('modules')

ومن بعد

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

من قذيفة

ls site-packages

إذا لم يكن هذا مفيدا، يمكنك القيام بذلك.

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

ونرى ما ينتج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top