web-gelistirme-sc.com

Yerel olarak kurulu Python modüllerinin listesini nasıl alabilirim?

Python kurulumumdaki (UNIX sunucusu) bir Python modülünün listesini almak istiyorum.

Bilgisayarınızda yüklü olan Python modüllerinin listesini nasıl edinebilirsiniz?

help('modules')

python Kabuğu/İsteminde.

877
ChristopheD

Şimdi, bu yöntemleri kendim denedim ve reklamı tam olarak ne oldu: Tüm modüller.

Ne yazık ki, gerçekten stdlib'i umursamıyorsun, bir python kurulumuyla ne elde ettiğini biliyorsun. 

Gerçekten,Iyüklü olanı istiyorum. 

Asıl şaşırtıcı olan, gayet iyi çalışan şeydi:

pip freeze

Hangi döndü:

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

"Şaşırtıcı" diyorum, çünkü paket yükleme aracı, bu işlevi bulmak için beklediğiniz tam yerdi, ancak 'donma' adı altında olmasa da, python ambalajı çok garip, bu aracın anlam ifade etmesinden korkuyorum. Pip 0.8.2, Python 2.7. 

241
chiggsy
  • ipythonNAME _ içine "importyazabilirsinizTab".

  • Standart Python yorumlayıcısına "help('modules')" yazabilirsiniz.

  • Komut satırında kullanabilirsiniz pydocNAME _modulesname__.

  • Bir komut dosyasında, pkgutil.iter_modules() arayın.

80
Johnsyweb

Pip 1.3 sürümünden bu yana, şunlara erişebilirsiniz:

pip list

Hangi "pip donma" için sözdizimsel şeker gibi görünüyor. Sürüm numaralarıyla birlikte kurulumunuza veya sanal makinenize özgü tüm modülleri listeler. Ne yazık ki, herhangi bir modülün güncel sürüm numarasını göstermiyor, bulaşıkları yıkıyor veya ayakkabılarınızı parlatmıyor.

71
Bryce

Bunu şu anda kullanılan modülleri görmek için kullanıyorum:

import sys as s
s.modules.keys()

pitonunuzda çalışan tüm modülleri gösterir.

Tüm yerleşik modüller için kullanın:

s.modules

Hangi tüm modülleri içeren bir nesne ve ithal nesneleri.

58
Dan Evans

Normal Shell'de sadece kullanın

pydoc modules
58
DrkNess

Pip 10'dan itibaren, kabul edilen cevap artık çalışmayacak. Geliştirme ekibi, get_installed_distributions yordamına erişimi kaldırdı. Aynı şeyi yapmak için setuptools dosyasında alternatif bir işlev vardır. Pip 10 ile çalışan alternatif bir sürüm:

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)

Lütfen önceki pip versiyonlarında da çalışıp çalışmadığını bana bildirin.

22
Big_Al_Tx

Kurulu paketleri Python Kabuğu'nda listelememiz gerekirse, help komutunu aşağıdaki gibi kullanabiliriz

>>help('modules package')
21
Sadheesh

OS X'te özel bir yüklü python 2.7 ile karşılaştım. Yüklü modülleri listelemek için X11'e ihtiyaç duydum (hem yardım hem de pydoc kullanarak).

X11 kurmadan tüm modülleri listeleyebilmek için http sunucusu olarak pydoc kullandım, yani:

pydoc -p 12345

Daha sonra tüm modülleri görmek için Safari'yi http://localhost:12345/ adresine yönlendirmek mümkündür.

11
Qiau

pkgutil.iter_modules kullanarak çok basit arama

from pkgutil import iter_modules
a=iter_modules()
while True:
    try: x=a.next()
    except: break
    if 'searchstr' in x[1]: print x[1]
10
stuudent

pencerelerde, Bunu cmd cinsinden girin

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

Paketlerin bir listesini almak için normalde pip list kullanın (versiyonlu).

Bu elbette sanal bir ortamda da çalışır.

8
James

pip freeze kullanmak dışında, sanal ortamlarıma yolk kurulumunu yapıyorum.

7
jdsantiagojr

Bu çözüm, birincil olarak importlib ve pkgutil modüllerine dayanıyor ve CPython 3.4 ve CPython 3.5 ile çalışıyor, ancak CPython 2 için bir desteği yok.


Açıklama

  1. sys.builtin_module_names - tüm yerleşik modülleri adlandırır (cevabımı bak burada )
  2. pkgutil.iter_modules() - kullanılabilir tüm modüller hakkında bilgi döndürür
  3. importlib.util.find_spec() - varsa, modülü içe aktarma hakkında bir bilgi döndürür
  4. BuiltinImporter - yerleşik modüller için bir ithalatçı ( docs )
  5. SourceFileLoader - standart bir Python modülü için bir ithalatçı (varsayılan olarak * .py uzantısına sahiptir) ( docs )
  6. ExtensionFileLoader - paylaşılan kütüphane (C veya C++ ile yazılmış) gibi modüller için bir ithalatçı

Tam kod

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 __== '__main__':
    main()

Kullanım

CPython3.5 için (kesilmiş)

$ 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 için (kesilmiş)

$ 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*******************************)
6
Seti Volkylany
  1. kullanılabilir tüm modülleri almak için sys.modules komutunu çalıştırın.
  2. tüm yüklü modüllerini almak için (okuma: pip tarafından yüklendi), pip.get_installed_distributions() dosyasına bakabilirsiniz

İkinci amaç için örnek kod:

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

pip freeze hepsini paket buluyor, ancak python paketlerinin bulunduğu tüm yolları listelemek için aşağıdaki komutu yazmanız yeterli.

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

Bunları dene

pip list

veya

pip freeze
3
Amit Gupta

Bu, Adam Matan'ın cevabı (kabul edilen) esinlenerek:

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

hangi bir tablo şeklinde yazdırır

19:33 [email protected] [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
-------------------------------------------  --------------  ------

böylece Sudo ile ve onsuz hangi paketleri kurduğunuzu kolayca ayırt edebilirsiniz.


Bir kenara not: Bir paketi bir defa Sudo aracılığıyla ve bir kez olmadan kurduğumda birinin öncelikli olduğunu ve diğerinin listelenmediğini (sadece bir konum gösteriliyor) fark ettim. Yerel dizindeki tek listenin listelendiğine inanıyorum. Bu geliştirilebilir.

3
Daniel F

anaconda python dağılımı yüklü ise, ayrıca

$conda list

yukarıda açıklanan çözümlere ek olarak.

3
Shreyas

Pek çok fikir var, başlangıçta bu ikisi üzerinde kafa yoruyorum:

pip

eksileri: her zaman yüklü değil

help ('modüller')

eksileri: konsola çıktı; kırık modüllerle (bkz. ubuntu ...) segfault

Temel kütüphaneleri kullanarak ve eski python 2.x ile uyumlu, kolay bir yaklaşıma ihtiyacım var

Ve ışığı görüyorum: listmodules.py

2.5'teki dokümantasyon kaynak dizininde gizli bir Python kurulumu için mevcut tüm modülleri listeleyen küçük bir komut dosyasıdır.

Artıları:

yalnızca imp, sys, os, re, time kullanır

python 1.5.2 ve daha yeni sürümlerde çalışmak üzere tasarlandı

kaynak kodu oldukça küçüktür, bu nedenle örneğin buggy modüllerinin bir istisna listesini iletmek için kolayca onarabilirsiniz.

2
Massimo

Bir kediyi cildin pek çok yolu var.

  • En basit yol, pydoc işlevini doğrudan Kabuktan aşağıdakilerle kullanmaktır:
    pydoc modules

  • Ancak daha fazla bilgi için pip-date adlı aracı kullanarak size kurulum tarihlerini de söyleyin.
    pip install pip-date


 enter image description here

1
not2qubit

Paketlerin belirli bir sürümünü varsayılan olarak AWS Lambda'da bulmam gerekiyordu. Bunu, bu sayfadaki fikirlerin bir karışımı ile yaptım. Gelecek için paylaşıyorum.

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
                ],
    }

Benim keşfettiğim, sağlanan boto3 kütüphanesinin eski olduğunu ve kodumun başarısız olması benim suçum değildi. Sadece projeme boto3 ve botocore eklemem gerekiyordu. Ama bu olmadan kodumun kötü olduğunu düşünerek kafama çarpıyor olurdum.

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

Benim keşfettiklerim ayrıca resmen yayınladıkları 'den farklıydı. Bunu yazarken:

  • İşletim sistemi - Amazon Linux
  • AMI - amzn-AMI-hvm-2017.03.1.20170812-x86_64-gp2
  • Linux çekirdeği - 4.14.77-70.59.amzn1.x86_64
  • JavaScript için AWS SDK - 2.290.0 \
  • Python için SDK (Boto 3) - 3-1.7.74 botocore-1.10.74
0
Bruno Bronosky

Bu yardımcı olacak

Terminalde veya IPython'da:

help('modules')

sonra

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
0
X Personified

Bir Python programından pip list nasıl aranacağını merak eden herkes için aşağıdakileri kullanabilirsiniz:

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