Python kurulumumda (UNIX sunucusu) bulunan Python modüllerinin bir listesini almak istiyorum.
Bilgisayarınıza kurulu Python modüllerinin listesini nasıl edinebilirsiniz?
Python kurulumumda (UNIX sunucusu) bulunan Python modüllerinin bir listesini almak istiyorum.
Bilgisayarınıza kurulu Python modüllerinin listesini nasıl edinebilirsiniz?
Yanıtlar:
pip freeze
Bir Python betiğinden benzer bir liste almak için 50 sentim:
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)
(Çok uzun) bir astar olarak:
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']
Bu çözüm sistemi kapsamına veya sanal ortam kapsamı için geçerlidir ve kapaklar paketleri tarafından yüklenen setuptools
, pip
ve ( tanrı korusun ) easy_install
.
Bu çağrının sonucunu flask sunucuma ekledim, bu yüzden onu http://example.com/exampleServer/environment
aradığımda sunucunun virtualenv'inde kurulu paketlerin listesini alıyorum. Hata ayıklamayı çok kolaylaştırır.
Bu tekniğin garip bir davranışını fark ettim - Python yorumlayıcısı bir setup.py
dosyayla aynı dizinde çağrıldığında, tarafından yüklenen paketi listelemez 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) $
Git deposunu klonla 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.
Biz uslu 's var setup.py
içinde /tmp/behave
:
(test_env) $ ls /tmp/behave/setup.py
/tmp/behave/setup.py
Python paketini git deposundan yükleyin
(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
çalışma dizini içerdiğinden, İkinci örnekte eksik behave
'ın setup.py
dosyasını.
Belgelerde bu konuyla ilgili herhangi bir referans bulamadım. Belki bunun için bir hata açacağım.
import pkg_resources; installed_packages = [(d.project_name, d.version) for d in pkg_resources.working_set]
AttributeError: module 'pip' has no attribute 'get_installed_distributions'
.
help('modules')
Python kabuğunda / isteminde.
pydoc modules
çalışır. Cevap olarak göndermelisiniz.
python -c 'help("modules")'
Şimdi, bu yöntemleri kendim denedim ve tam olarak reklamı yapılan şeyi aldım: Tüm modüller.
Ne yazık ki, gerçekten stdlib'i umursamıyorsunuz, bir python yüklemesiyle ne elde ettiğinizi biliyorsunuz.
Gerçekten, o şeyi istiyorum ben kurdum.
Aslında şaşırtıcı bir şekilde işe yarayan şey şuydu:
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ı bir şekilde" diyorum çünkü paket yükleme aracı, 'donma' adı altında olmasa da, bu işlevselliği bulmayı bekleyebileceği kesin bir yer, ancak python ambalajı çok garip, bu aracın mantıklı olduğunu merak ediyorum. Pip 0.8.2, Python 2.7.
Pip 1.3 sürümünden bu yana, şunlara erişebilirsiniz:
pip list
Hangi "pip dondurma" için sözdizimsel şeker gibi görünüyor. Yüklemenize veya virtualenv'e özgü tüm modülleri ve bunların sürüm numaralarını listeler. Ne yazık ki herhangi bir modülün mevcut sürüm numarasını göstermez, bulaşıklarınızı yıkamaz veya ayakkabılarınızı parlamaz.
pip list --local
arasında ayrım yapmak için de vardır . virtualenv
pip list
en basit ve en iyisidir. İşte seçenekler ve detaylar.
İçine ipython
" import
Tab" yazabilirsiniz .
Standart Python yorumlayıcısında " help('modules')
" yazabilirsiniz .
Komut satırında kullanabilirsiniz .pydoc
modules
Bir komut dosyasında arayın pkgutil.iter_modules()
.
pkgutil.iter_modules()
çalışır, yukarıdaki pip çözümü tüm paketleri değil, sadece pip yoluyla yüklenenleri listeler.
python -c 'import pkgutil;print [x[1] for x in list(pkgutil.iter_modules())]'
. Tüm modül adlarını gerçekten büyük bir Python listesi olarak dökmelidir. x[1]
Biraz tarafından üretilen dizilerini modül adı koparmak için kullanılır pkgutil.iter_modules()
.
Ben sadece şu anda kullanılan modülleri görmek için kullanın:
import sys as s
s.modules.keys()
Python'unuzda çalışan tüm modülleri gösterir.
Tüm dahili modüller için:
s.modules
Hangi tüm modülleri ve ithalat nesneleri içeren bir diksiyon.
pydoc
de pip
kurulu (benim durumumda bir NAS) kısıtlı sistemlerde çalışıyor gibi görünen tek yöntemdir .
help('modules')
sadece bana cevap vermeden takılıyor. Ama bu yaklaşım sys
mükemmel çalışıyor
Normal kabukta sadece
pydoc modules
py -m pydoc modules
cmd veya Powershell'de yapabilirsiniz.
pydoc modules
Python 3.6 ile Windows 10'da benim için çalışmadı, ancak @VKK değişikliği: py -m pydoc modules
cmd / Powershell'de çalışıyor.
Pip 10'dan itibaren, kabul edilen cevap artık çalışmaz. Geliştirme ekibi get_installed_distributions
rutine erişimi kaldırdı . setuptools
Aynı şeyi yapmak için alternatif bir fonksiyon var . İşte 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 pip'in önceki sürümlerinde de çalışıp çalışmayacağını bana bildirin.
pip freeze
; bu konudaki bilgimin derinliği oldukça sınırlıdır. Kabul edilen cevap benim için işe yaramadığında çözüme giden yolu setuptools
buldum ve bununla ilgili bir cevapla birleştirmeye çalıştım ve işe koyuldum.
get_installed_distributions routine
.
setuptools
.
Normalde pip list
paketlerin bir listesini almak için kullanıyorum (versiyonlu).
Bu elbette sanal bir ortamda da işe yarıyor. Yalnızca sanal ortamda yüklü olanları göstermek için (genel paketler değil) kullanın pip list --local
.
Buradapip list
, birkaç iyi örnekle mevcut tüm seçenekleri gösteren belgeler bulunmaktadır .
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]
for m in iter_modules()
ve işe yaradı.
OS X'te özel yüklü bir python 2.7 ile karşılaştım. Yüklü modülleri listelemek için X11 gerekiyordu (hem yardım hem de pydoc kullanarak).
X11'i kurmadan tüm modülleri listeleyebilmek için http-server olarak pydoc çalıştırdım, yani:
pydoc -p 12345
Ardından Safari'yi http://localhost:12345/
tüm modülleri görmeye yönlendirmek mümkündür .
Bunları dene
pip list
veya
pip freeze
Terminalde veya IPython'da şunu yazın:
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
Bu çözüm birincil modüllere dayanır importlib
ve pkgutil
CPython 3.4 ve CPython 3.5 ile çalışır, ancak CPython 2'yi desteklemez.
açıklama
sys.builtin_module_names
- tüm yerleşik modülleri adlandırır (cevabımı buraya bakın )pkgutil.iter_modules()
- kullanılabilir tüm modüller hakkında bilgi döndürürimportlib.util.find_spec()
- varsa, modülü içe aktarma hakkında bir bilgi döndürürBuiltinImporter
- yerleşik modüller için bir ithalatçı ( dokümanlar )SourceFileLoader
- standart bir Python modülü için bir ithalatçı (varsayılan olarak uzantısı * .py'dir) ( dokümanlar )ExtensionFileLoader
- paylaşımlı kütüphane olarak modüller için bir ithalatçı (C veya C ++ ile yazılmış)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 __name__ == '__main__':
main()
kullanım
CPython3.5 için (kesik)
$ 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 (kesik)
$ 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*******************************)
pip
Python'da yazılmış yazılım paketlerini kurmak ve yönetmek için kullanılan - paket yönetim sistemine ve sonuç pip.get_installed_distributions()
olarak pip ile kurulan modüllere dayanmaktadır . Cevabım tamamen Python'un standart kütüphanesine dayanıyor ve içe aktarılabilecek tüm modülleri kapsıyor. Cevabımın en büyük dezavantajı - CPython 2 için destek yok
**truncated**
çıktının kesildiği özel bir anlam içeriyor . Belki dikkatli olmazsınız, ama eğer yapmazsa, bana sisteminiz ve Python uygulaması hakkında bilgi göndermek için, düzeltmek için ek araştırma yapacağım.
Uyarı: Adam Matan pip> 10.0'da bu kullanımdan vazgeçiyor. Ayrıca, aşağıdaki @ sinoroc'un yorumunu okuyun
Bu Adam Matan'ın cevabından ilham aldı (kabul edilen cevap ):
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))
daha sonra bir tabloyu
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
------------------------------------------- -------------- ------
Böylece, hangi paketleri yükleyip yüklemediğinizi kolayca fark edebilirsiniz sudo
.
Bir kenara not: Bir paketi bir kez sudo
ve bir kez olmadan yüklediğimde , diğerinin listelenmemesi için önceliğe sahip olduğunu fark ettim (sadece bir konum gösterilir). Daha sonra yerel dizinde sadece bir tane olduğuna inanıyorum. Bu geliştirilebilir.
pip
kez kullanmak ve sonra çıkmaktır. Davranışın değişebileceği daha çok bir sorun gibi görünüyor.
_internal
). Sonuçta, açıkça işe yarıyor ama kötü uygulama. Daha iyi alternatifler var, bazıları bu sorunun diğer cevaplarında.
Kenara kullanmasını pip freeze
ben yüklerken edilmiştir sarısı benim sanal ortamlarda.
Yüklü bir anaconda python dağıtımınız varsa,
$conda list
yukarıda tarif edilen çözeltilere ek olarak.
conda install
, işe
sys.modules
pip
),pip.get_installed_distributions()
İ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
/usr/bin/python
veya bir gelen python.org ? Birincisi için sys.modules
sorunsuz bir şekilde kullanabilirim .
system.modules
yerine kullanıyorsunuz sys.modules
.
Python düzenleyicinizde veya IPython'unuzda aşağıdakileri çalıştırın
import pkg_resources;
installed_packages = {d.project_name: d.version for d in pkg_resources.working_set}
print(installed_packages)
Diğer cevapları okuyun ve Python içinde en hızlı ve en kolay olan bu komboyu bir araya getirin
pip freeze tüm paketleri bulmak yapar, ancak python paketlerinin olduğu tüm yolları listelemek için aşağıdaki komutu yazabilirsiniz.
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Birçok fikir var, başlangıçta bu ikisini düşünüyoruz:
bip
eksileri: her zaman yüklü değil
yardımı ( 'modüller')
eksileri: konsola çıktı; kırık modüllerle (bkz. ubuntu ...) segfault olabilir
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'te 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ı:
sadece kullanır imp , sys, os, re, zaman
Python 1.5.2 ve daha yeni sürümlerde çalışacak şekilde tasarlanmıştır
kaynak kodu gerçekten kompakttır, bu nedenle onunla kolayca uğraşabilirsiniz, örneğin bir hata ayıklama modülü istisna listesi geçirmek (bunları içe aktarmaya çalışmayın)
AWS Lambda'da varsayılan olarak mevcut paketlerin belirli bir sürümünü bulmam gerekiyordu. Bunu bu sayfadaki fikirlerin bir karışımı ile yaptım. Bunu gelecek nesiller 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
],
}
Ne keşfetti sağlanan sağlanan boto3 kütüphane güncel ve yolumun başarısız olduğunu benim hatam değildi. Projeme boto3 ve botocore eklemem gerekiyordu. Ama bu olmadan kodumun kötü olduğunu düşünerek kafamı vurabilirdim.
{
"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
},
...
Keşfettiğim şey resmi olarak yayınladıklarından 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
Kurulum
pip install pkgutil
kod
import pkgutil
for i in pkgutil.iter_modules(None): # returns a tuple (path, package_name, ispkg_flag)
print(i[1]) #or you can append it to a list
Örnek Çıktı:
multiprocessing
netrc
nntplib
ntpath
nturl2path
numbers
opcode
pickle
pickletools
pipes
pkgutil
Yüklü modüllerin listesini döndürecek bir python kodu çözümü. Kod kolayca sürüm numaralarını içerecek şekilde değiştirilebilir.
import subprocess
import sys
from pprint import pprint
installed_packages = reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']).decode('utf-8')
installed_packages = installed_packages.split('\r\n')
installed_packages = [pkg.split('==')[0] for pkg in installed_packages if pkg != '']
pprint(installed_packages)
pip list
Bir Python programından nasıl arama yapacağınızı merak eden herkes için aşağıdakileri kullanabilirsiniz:
import pip
pip.main(['list]) # this will print all the packages
Kabuktan
ls site-packages
Bu yardımcı olmazsa, bunu yapabilirsiniz.
import sys
import os
for p in sys.path:
print os.listdir( p )
Ve bunun ne ürettiğine bakın.