Saya ingin mendapatkan daftar modul Python, yang ada di instalasi Python saya (server UNIX).
Bagaimana Anda bisa mendapatkan daftar modul Python yang diinstal di komputer Anda?
Saya ingin mendapatkan daftar modul Python, yang ada di instalasi Python saya (server UNIX).
Bagaimana Anda bisa mendapatkan daftar modul Python yang diinstal di komputer Anda?
Jawaban:
50 sen saya untuk mendapatkan pip freeze
daftar seperti dari skrip 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)
Sebagai satu liner (terlalu panjang):
sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
Memberi:
['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']
Solusi ini berlaku untuk ruang lingkup sistem atau ruang lingkup lingkungan virtual, dan mencakup paket-paket yang diinstal oleh setuptools
, pip
dan ( allah dilarang ) easy_install
.
Saya menambahkan hasil panggilan ini ke server labu saya, jadi ketika saya memanggilnya dengan http://example.com/exampleServer/environment
saya mendapatkan daftar paket yang diinstal pada virtualenv server. Itu membuat debugging jauh lebih mudah.
Saya telah memperhatikan perilaku aneh teknik ini - ketika interpreter Python dipanggil dalam direktori yang sama dengan setup.py
file, itu tidak mencantumkan paket yang diinstal oleh 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) $
Mengkloning git repo dengan 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.
Kami memiliki perilaku setup.py
di /tmp/behave
:
(test_env) $ ls /tmp/behave/setup.py
/tmp/behave/setup.py
Instal paket python dari git repo
(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
hilang dari contoh kedua, karena direktori kerja mengandung behave
's setup.py
berkas.
Saya tidak dapat menemukan referensi untuk masalah ini dalam dokumentasi. Mungkin saya akan membuka bug untuk itu.
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')
dalam shell Python / prompt.
pydoc modules
berfungsi. Anda harus mengirimkannya sebagai jawaban.
python -c 'help("modules")'
Sekarang, metode ini saya coba sendiri, dan saya mendapatkan apa yang diiklankan: Semua modul.
Sayangnya, sungguh Anda tidak terlalu peduli dengan stdlib, Anda tahu apa yang Anda dapatkan dengan instalasi python.
Sungguh, saya ingin barang yang saya instal.
Apa yang sebenarnya, secara mengejutkan, bekerja dengan baik adalah:
pip freeze
Yang dikembalikan:
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
Saya mengatakan "secara mengejutkan" karena alat instal paket adalah tempat yang tepat yang diharapkan untuk menemukan fungsionalitas ini, walaupun tidak dengan nama 'beku' tetapi kemasan python sangat aneh, sehingga saya terperangah bahwa alat ini masuk akal. Pip 0.8.2, Python 2.7.
Sejak pip versi 1.3, Anda memiliki akses ke:
pip list
Yang tampaknya menjadi gula sintaksis untuk "pip freeze". Ini akan mendaftar semua modul khusus untuk instalasi Anda atau virtualenv, bersama dengan nomor versi mereka. Sayangnya itu tidak menampilkan nomor versi modul apa pun saat ini, juga tidak mencuci piring atau menyemir sepatu Anda.
pip list --local
untuk membedakan antara virtualenv
paket situs global dan, dibahas di sini .
pip list
adalah yang paling sederhana dan terbaik. Berikut adalah opsi dan detailnya.
Di dalam ipython
Anda dapat mengetik " import
Tab".
Dalam juru bahasa Python standar, Anda bisa mengetikkan " help('modules')
".
Di baris perintah, Anda bisa menggunakan .pydoc
modules
Dalam sebuah skrip, panggil pkgutil.iter_modules()
.
pkgutil.iter_modules()
berfungsi, solusi pip di atas tidak mencantumkan semua paket, hanya yang diinstal melalui pip.
python -c 'import pkgutil;print [x[1] for x in list(pkgutil.iter_modules())]'
. Seharusnya membuang semua nama modul sebagai satu daftar Python yang sangat besar. The x[1]
bit digunakan untuk memetik nama modul dari tuple yang dihasilkan oleh pkgutil.iter_modules()
.
Saya hanya menggunakan ini untuk melihat modul yang sedang digunakan:
import sys as s
s.modules.keys()
yang menunjukkan semua modul berjalan di python Anda.
Untuk semua modul bawaan gunakan:
s.modules
Yaitu dict yang berisi semua modul dan objek impor.
pydoc
atau pip
menginstal (NAS dalam kasus saya).
help('modules')
hanya hang tanpa respons untukku. Tetapi pendekatan ini sys
bekerja dengan sempurna
Dalam shell biasa gunakan saja
pydoc modules
py -m pydoc modules
dalam cmd atau Powershell.
pydoc modules
tidak bekerja untuk saya di Windows 10 dengan Python 3.6, tetapi modifikasi @VKK: py -m pydoc modules
tidak bekerja di cmd / Powershell.
Pada pip 10, jawaban yang diterima tidak akan berfungsi lagi. Tim pengembangan telah menghapus akses ke get_installed_distributions
rutinitas. Ada fungsi alternatif dalam setuptools
untuk melakukan hal yang sama. Berikut ini adalah versi alternatif yang berfungsi dengan 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)
Tolong beri tahu saya jika itu juga akan atau tidak berfungsi di versi sebelumnya dari pip.
pip freeze
; kedalaman pengetahuan saya tentang topik ini agak terbatas. Saya agak meraba-raba mencari solusi ketika jawaban yang diterima tidak bekerja untuk saya dan saya mencoba menggabungkannya dengan jawaban yang terkait setuptools
dan membuatnya bekerja.
get_installed_distributions routine
.
setuptools
.
Saya biasanya menggunakan pip list
untuk mendapatkan daftar paket (dengan versi).
Ini bekerja di lingkungan virtual juga, tentu saja. Untuk menunjukkan apa yang diinstal hanya dalam lingkungan virtual (bukan paket global), gunakan pip list --local
.
Berikut dokumentasi yang menunjukkan semua pip list
opsi yang tersedia , dengan beberapa contoh bagus.
Pencarian sangat sederhana menggunakan 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]
for m in iter_modules()
dan itu berhasil juga.
Saya bertemu dengan python 2.7 yang diinstal khusus pada OS X. Diperlukan X11 untuk mendaftar modul yang diinstal (keduanya menggunakan bantuan dan pydoc).
Untuk dapat mendaftar semua modul tanpa menginstal X11 saya menjalankan pydoc sebagai http-server, yaitu:
pydoc -p 12345
Maka mungkin untuk mengarahkan Safari http://localhost:12345/
untuk melihat semua modul.
Di terminal atau IPython, ketik:
help('modules')
kemudian
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
Solusi ini primer berdasarkan pada modul importlib
dan pkgutil
dan bekerja dengan CPython 3.4 dan CPython 3.5, tetapi tidak memiliki dukungan untuk CPython 2.
Penjelasan
sys.builtin_module_names
- beri nama semua modul bawaan (lihat jawaban saya di sini )pkgutil.iter_modules()
- mengembalikan informasi tentang semua modul yang tersediaimportlib.util.find_spec()
- mengembalikan informasi tentang mengimpor modul, jika adaBuiltinImporter
- importir untuk modul bawaan ( dokumen )SourceFileLoader
- importir untuk modul Python standar (secara default memiliki ekstensi * .py) ( docs )ExtensionFileLoader
- importir untuk modul sebagai pustaka bersama (ditulis pada C atau C ++)Kode lengkap
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()
Pemakaian
Untuk CPython3.5 (terpotong)
$ 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*******************************)
Untuk CPython3.4 (terpotong)
$ 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
- sistem manajemen paket yang digunakan untuk menginstal dan mengelola paket perangkat lunak yang ditulis dengan Python dan hasilnya pip.get_installed_distributions()
mengembalikan modul yang diinstal dengan pip. Jawaban saya sepenuhnya didasarkan pada pustaka standar Python dan mencakup semua modul yang tersedia untuk impor. Kelemahan terbesar jawaban saya - tidak ada dukungan untuk CPython 2.
**truncated**
, di mana output terpotong. Mungkin Anda tidak hati-hati, tetapi jika tidak, maka untuk mengirim saya informasi tentang sistem Anda dan implementasi Python, saya akan membuat riset tambahan untuk memperbaikinya.
Peringatan: Adam Matan tidak menyarankan penggunaan ini dalam pip> 10.0. Juga, baca komentar @ sinoroc di bawah ini
Ini diilhami oleh jawaban Adam Matan (yang diterima):
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))
yang kemudian mencetak tabel dalam bentuk
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
------------------------------------------- -------------- ------
yang memungkinkan Anda dengan mudah membedakan paket mana yang Anda instal dengan dan tanpa sudo
.
Catatan samping: Saya perhatikan ketika saya menginstal paket sekali melalui sudo
dan sekali tanpa, satu diutamakan sehingga yang lain tidak terdaftar (hanya satu lokasi ditampilkan). Saya percaya bahwa hanya yang ada di direktori lokal yang terdaftar. Ini bisa diperbaiki.
pip
sekali dan kemudian keluar. Tampaknya lebih dari masalah yang bisa berubah perilaku.
_internal
). Semua dalam semua, itu jelas bekerja tetapi merupakan praktik yang buruk. Ada alternatif yang lebih baik, ada yang di jawaban lain untuk pertanyaan ini.
Selain menggunakan pip freeze
saya telah menginstal kuning telur di lingkungan virtual saya.
Jika Anda memiliki distribusi python anaconda diinstal, Anda juga bisa menggunakan
$conda list
selain solusi yang dijelaskan di atas.
conda install
, itu akan bekerja :)
sys.modules
pip
), Anda dapat melihatnyapip.get_installed_distributions()
Untuk tujuan kedua, contoh kode:
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
atau yang berasal dari python.org ? Untuk yang pertama, saya bisa menggunakan sys.modules
tanpa masalah.
system.modules
bukan sys.modules
.
Jalankan yang berikut ini di editor python atau IPython Anda
import pkg_resources;
installed_packages = {d.project_name: d.version for d in pkg_resources.working_set}
print(installed_packages)
Baca jawaban lain dan kumpulkan kombinasi ini, yang tercepat dan termudah di dalam Python
pip freeze tidak semuanya menemukan paket namun seseorang dapat dengan mudah menulis perintah berikut untuk mendaftar semua path di mana paket python berada.
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Ada banyak cara untuk menguliti kucing.
Cara paling sederhana adalah dengan menggunakan pydoc
fungsi langsung dari shell dengan:
pydoc modules
Tetapi untuk informasi lebih lanjut gunakan alat yang disebut pip-date yang juga memberi tahu Anda tanggal pemasangan.
pip install pip-date
Ada banyak ide, awalnya saya merenungkan dua hal ini:
pip
kontra: tidak selalu diinstal
bantuan ('modul')
kontra: keluaran ke konsol; dengan modul yang rusak (lihat ubuntu ...) dapat melakukan segmentasi
Saya membutuhkan pendekatan yang mudah, menggunakan perpustakaan dasar dan kompatibel dengan python 2.x lama
Dan saya melihat cahaya: listmodules.py
Tersembunyi di direktori sumber dokumentasi di 2.5 adalah skrip kecil yang mencantumkan semua modul yang tersedia untuk instalasi Python.
Pro:
hanya menggunakan imp, sys, os, re, time
dirancang untuk berjalan di Python 1.5.2 dan yang lebih baru
kode sumbernya benar-benar ringkas, sehingga Anda dapat bermain-main dengan mudah, misalnya untuk melewatkan daftar pengecualian modul kereta (jangan coba mengimpornya)
Saya perlu menemukan versi spesifik paket yang tersedia secara default di AWS Lambda. Saya melakukannya dengan banyak ide dari halaman ini. Saya membagikannya untuk anak cucu.
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
],
}
Apa yang saya temukan adalah bahwa perpustakaan boto3 yang disediakan sudah ketinggalan zaman dan bukan salah saya bahwa kode saya gagal. Saya hanya perlu menambahkan boto3 dan botocore ke proyek saya. Tetapi tanpa ini saya akan membenturkan kepala saya berpikir kode saya buruk.
{
"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
},
...
Apa yang saya temukan juga berbeda dari apa yang mereka terbitkan secara resmi . Pada saat penulisan ini:
- Sistem operasi - Amazon Linux
- AMI - amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2
- Kernel Linux - 4.14.77-70.59.amzn1.x86_64
- AWS SDK untuk JavaScript - 2.290.0 \
- SDK untuk Python (Boto 3) - 3-1.7.74 botocore-1.10.74
Instalasi
pip install pkgutil
Kode
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
Output sampel:
multiprocessing
netrc
nntplib
ntpath
nturl2path
numbers
opcode
pickle
pickletools
pipes
pkgutil
Berikut ini adalah solusi kode python yang akan mengembalikan daftar modul yang diinstal. Seseorang dapat dengan mudah memodifikasi kode untuk memasukkan nomor versi.
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)
Bagi siapa pun yang bertanya-tanya cara menelepon pip list
dari program Python, Anda dapat menggunakan yang berikut ini:
import pip
pip.main(['list]) # this will print all the packages
Dari cangkang
ls site-packages
Jika itu tidak membantu, Anda bisa melakukan ini.
import sys
import os
for p in sys.path:
print os.listdir( p )
Dan lihat apa yang menghasilkan.