දේශීයව ස්ථාපනය කර ඇති පයිතන් මොඩියුල ලැයිස්තුවක් ලබා ගන්නේ කෙසේද?


1011

මගේ පයිතන් ස්ථාපනය (යුනික්ස් සේවාදායකය) තුළ ඇති පයිතන් මොඩියුල ලැයිස්තුවක් ලබා ගැනීමට මම කැමතියි.

ඔබේ පරිගණකයේ ස්ථාපනය කර ඇති පයිතන් මොඩියුල ලැයිස්තුවක් ලබා ගන්නේ කෙසේද?


79
ඔබට කළ හැක්කේ >>> උදව් () සහ පසුව >>> මොඩියුල
ජුලියස් නියුමන්

1
විකල්පයක් තිබේද? උදව් () මා වෙනුවෙන් එල්ලී ඇත.
පාවුලෝ කාර්වාල්හෝ

2
මෙම පිළිතුරු බොහොමයක් උපකල්පනය කරන්නේ ඔබට විධාන රේඛාවකට ප්‍රවේශය ඇති බවයි. ඔබ AWS Lambda භාවිතා කරන්නේ නම්, ඔබ ඒ සියල්ල කළ යුත්තේ පයිතන් ඇතුළත සිටය. Stackoverflow.com/a/54939905/117471
බ un නෝ බ්‍රොනොස්කි

මොකක්ද වැරැද්ද pip list?
H Aßdøµ

Answers:


618

විසඳුමක්

පයිප්ප> 10.0 සමඟ භාවිතා නොකරන්න!

pip freezeපයිතන් පිටපතකින් සමාන ලැයිස්තුවක් ලබා ගැනීම සඳහා මගේ ශත 50 :

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.

මගේ භාවිත නඩුව

මම මෙම ඇමතුමේ ප්‍රති result ලය මගේ ෆ්ලැස්ක් සේවාදායකයට එක් කළෙමි, එබැවින් මා එය අමතන විට http://example.com/exampleServer/environmentසේවාදායකයේ වර්චුවලෙන්ව් හි ස්ථාපනය කර ඇති පැකේජ ලැයිස්තුව ලබා ගනිමි. එය නිදොස් කිරීම පහසු කරයි.

ගුහා

මෙම තාක්‍ෂණයේ අමුතු හැසිරීමක් මා දැක ඇත - 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) $ 
Git repo සමඟ ක්ලෝන කරන්න 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
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වැඩ කරන ඩිරෙක්ටරිය අඩංගු වන බැවින්, මෙම දෙවන උදාහරණය අතුරුදහන් behaveගේ setup.pyගොනුව.

ප්‍රලේඛනය තුළ මෙම ගැටලුව පිළිබඳ කිසිදු සඳහනක් මට සොයාගත නොහැකි විය. සමහර විට මම ඒ සඳහා දෝෂයක් විවෘත කරමි.


5
මෙම පිළිතුරට ස්තූතියි! "දේශීයව" ස්ථාපනය කර ඇති පයිතන් මොඩියුලයන් අසන නිසා එය ප්‍රශ්නයට වඩා හොඳ පිළිතුරක් ඇතැයි මම සිතමි. Pip freeze ද සෑම විටම යා යුතු මාර්ගය නොවේ. මෙය වඩා හොඳින් ක්‍රියා කරයි - මම හිතන්නේ.
ලියෝ ලියෝපෝල්ඩ් හර්ට්ස් 준영

3
Asi මාසි මෙම විසඳුමේ අවවාදය පිළිබඳ සවිස්තරාත්මක පැහැදිලි කිරීමක් එක් කළේය. එය ඇත්තෙන්ම අමුතු දෙයක්.
ඇඩම් මාතාන්

23
විකල්පයක්:import pkg_resources; installed_packages = [(d.project_name, d.version) for d in pkg_resources.working_set]
ඉබොලියන්

14
පයිප්ප 10 වන විට, මෙම පිළිතුර තවදුරටත් ක්‍රියාත්මක නොවේ. @Ebolyen හි අදහස් දැක්වීම මඟින් ක්‍රියා කරන විකල්ප විධාන පෙන්වයි. මම එම නිගමනයට පැමිණ සම්පූර්ණ සංශෝධිත කේතය පහතින් පළ කළෙමි.
Big_Al_Tx

5
පයිප්පයේ මෑත සංස්කරණ වලදී, මෙය ක්‍රියා නොකරනු ඇත, එය වැරදි පණිවිඩයක් පවසමින් AttributeError: module 'pip' has no attribute 'get_installed_distributions'.
HelloGoodbye

1053
help('modules')

පයිතන් කවචයක / විමසුමේ.


10
FdF pydoc modulesවැඩ කරයි. ඔබ එය පිළිතුරක් ලෙස ඉදිරිපත් කළ යුතුය.
අබිසර්න්

37
මට වැරැද්දක් දුන්නා!
zanbri

3
nobar, zanbri, @Jo Frambach: උබුන්ටු වල? මෙහි විස්තර කර ඇති දෝෂයක් තිබේ: bugs.launchpad.net/ubuntu/+source/python2.7/+bug/896836
ChristopheD

2
මොඩියුල ස්ථාපනය කර ඇති ස්ථානය සහ වර්තමාන අනුවාදය කුමක්ද යන්න පිළිබඳ අමතර තොරතුරු ලබා ගන්නේ කෙසේද?
කුතුහලයෙන්

6
python -c 'help("modules")'
kenorb

291

දැන්, මෙම ක්‍රම මා විසින්ම අත්හදා බැලූ අතර, ප්‍රචාරය කළ දේ හරියටම මට ලැබුණි: සියලුම මොඩියුල.

අහෝ, ඇත්ත වශයෙන්ම ඔබ 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

මම "පුදුම සහගත" යැයි කියන්නේ පැකේජ ස්ථාපනය කිරීමේ මෙවලම මෙම ක්‍රියාකාරීත්වය සොයා ගැනීමට අපේක්ෂා කරන නිශ්චිත ස්ථානය වන අතර, එය 'කැටි කිරීම' යන නාමයෙන් නොව පයිතන් ඇසුරුම්කරණය ඉතා අමුතුයි, මෙම මෙවලම අර්ථවත් වන බව මට හැඟේ. පිප් 0.8.2, පයිතන් 2.7.


4
නම පිටුපස ඇති අදහස නම්, ඔබ දැන් ස්ථාපනය කර ඇති දේවල "ශීත කළ" ඡායාරූපයක් ලබා ගැනීමයි, එමඟින් ඔබට වෙනත් මොඩියුලයන් වෙනත් පරිසරයක ස්ථාපනය කර නැවත පයිප්පයට පෝෂණය කළ හැකිය.
රයන් සී. තොම්සන්

අරාෂ්, ඔබට වින්ඩෝස් වලද නල ස්ථාපනය කළ හැකිය! පළමුවෙන්ම setuptools ස්ථාපනය කර පයිප්ප ස්ථාපනය කිරීම සඳහා easy_install භාවිතා කරන්න :)
gawbul

මෙය විශිෂ්ටයි, නමුත් මා විසින් ස්ථාපනය කරන ලද සමහර පුස්තකාල මග හැරී ඇති බව පෙනේ. උදාහරණයක් ලෙස, එය PyQt ලැයිස්තුගත නොකරයි.
Junuxx

9
1.3 පයිප්පයේ සිට ලැයිස්තු විධානය ඇත.
පියොටර් ඩොබ්රොගොස්ට්

එය වැඩ කරනවා. මොනතරම් අවුල් සහගත පයිතන් ද? රේල්ස් වල පවතින දේට සමාන විසඳුම් ඉදිරිපත් කිරීමට ඔවුන්ට නොහැකි වන්නේ ඇයි? (Gemfile, bundler, rvm)
Dimitris

111

පයිප් අනුවාදය 1.3 සිට, ඔබට මෙයට ප්‍රවේශය ඇත:

pip list

එය "පයිප්ප කැටි කිරීම" සඳහා සින්ටැක්ටික් සීනි ලෙස පෙනේ. එය ඔබගේ ස්ථාපනය හෝ virtualenv ට අදාළ සියලුම මොඩියුලයන් ඒවායේ අනුවාද අංක සමඟ ලැයිස්තුගත කරනු ඇත. අවාසනාවකට එය කිසිදු මොඩියුලයක වත්මන් අනුවාද අංකය පෙන්වන්නේ නැත, ඔබේ පිඟන් සෝදන්නේ හෝ සපත්තු බබළන්නේ නැත.


4
ගෝලීය වෙබ් අඩවි පැකේජ pip list --localඅතර වෙනස හඳුනා ගැනීම සඳහා ද මෙහි සාකච්ඡා කෙරේ . virtualenv
අයොනිස් ෆිලිපිඩිස්

1
බොහෝ දුරට හොඳම. එය අනුවාදයන් ද ලබා ගනී.
aerijman

pip listසරලම හා හොඳම වේ. මෙන්න විකල්ප සහ විස්තර.
ලෙවී බගුලි

87
  • දී ipythonඔබ "ටයිප් කළ හැක importTab."

  • සම්මත පයිතන් පරිවර්තකයේදී ඔබට " help('modules')" ටයිප් කළ හැකිය .

  • විධාන රේඛාවේදී, ඔබට භාවිතා කළ හැකිය .pydoc modules

  • පිටපතක, අමතන්න pkgutil.iter_modules().


5
pkgutil.iter_modules()ක්‍රියා කරයි, ඉහත නල විසඳුම සියලුම පැකේජ ලැයිස්තුගත නොකරයි, පයිප්ප හරහා ස්ථාපනය කර ඇති ඒවා පමණි.
metaperture

2
නියමයි! ප්‍රශ්නය ඇසූ දා සිට ඔවුන් වැඩි දියුණු කළ ලියකියවිලි ඇතැයි මම සිතමි. pydoc මොඩියුලයන් අයාචිත තැපැල් මොඩියුලවල ස්පෑම් සොයයි. අවසාන කරුණ ඔබට මොඩියුලය භාවිතා කිරීමට ප්‍රමාණවත් තොරතුරු ලබා දෙන බව පෙනේ. @metaperture ඔබ, කරුණාකර, උදාහරණයක් ඔබ සියලු දේශීය මොඩියුල ස්ථාපනය ලැයිස්තුගත ආකාරය (නෑ stlib දැවැන්ත ලැයිස්තුව උදව් ( 'ෙමොඩියුල') විසින්) විසින් දෙන්න පුළුවන්ද pkgutil.iter_modules () .
ලියෝ ලියෝපෝල්ඩ් හර්ට්ස් 준영

2
@ LéoLéopoldHertz this මෙම ස්නිපටය උත්සාහ කරන්න : python -c 'import pkgutil;print [x[1] for x in list(pkgutil.iter_modules())]'. එය සියලුම මොඩියුලයේ නම් විශාල පයිතන් ලැයිස්තුවක් ලෙස බැහැර කළ යුතුය. මෙම x[1]ටිකක් මගින් ජනනය කරන ලද tuples පිටතට මොඩියුල නාමය පැහැර ගන්නට කිසිවෙකුට භාවිතා pkgutil.iter_modules().
පිලිප් කොන්රාඩ්

78

දැනට භාවිතා කරන මොඩියුල බැලීමට මම මෙය භාවිතා කරමි:

import sys as s
s.modules.keys()

එය ඔබගේ පයිතන් මත ධාවනය වන සියලුම මොඩියුල පෙන්වයි.

සියලු සාදන ලද මොඩියුල සඳහා:

s.modules

එය සියලු මොඩියුල සහ ආනයන වස්තු අඩංගු නියෝගයකි.


2
# ඔබ sys ආනයනය කිරීමෙන් පසු sys ලෙස ආයාත කරන්න: ඔබට මුද්‍රණය කළ හැකිය: sys.modules.keys ()
ඩෑන් එවාන්ස්

මගේ සටහන සංස්කරණය කළේ ඇයිදැයි විශ්වාස නැත, නමුත් පෙර පෝස්ට් වල ඇති වැරදි නිවැරදි කිරීමට මා පළ කළ තොරතුරු භාවිතා කිරීම ගැන ස්තූතියි. ඔබ උදව් () එදිරිව උදව් ('') භාවිතා කරන්නේ නම් ඔබ දෝෂ නැවත ලබා දෙනු ඇත. මෙය dir ('') & sys ('') ආදිය සඳහාද වේ. මෙය උපකාරී වන අතර ඉවත් නොකෙරේ යැයි සිතමු.
ඩෑන් එවාන්ස්

මගේ අවසාන ලිපිය නොසලකා හරින්න, මෙම ලිපිය සංස්කරණය කර නැත. මම මෙතැනින් සොයාගත් සමාන ලිපියක් ගැන සිතමින් සිටියෙමි : stackoverflow.com/questions/139180/… ව්‍යාකූලත්වයට කණගාටුයි.
ඩෑන් එවාන්ස්

7
ඉහළට ඔසවා ඇත, මන්දයත් ස්ථාපනය කර නොමැති pydocහෝ pipස්ථාපනය කර නොමැති සීමිත පද්ධති මත ක්‍රියා කරන එකම ක්‍රමය මෙය වන බැවිනි (මගේ නඩුවේ NAS).
තෝමස්

1
තෝමස් සමඟ එකඟ විය. මම repl.it භාවිතා කරමි, උදාහරණයක් ලෙස, එය ද සීමිත පරිසරයකි. help('modules')මට ප්‍රතිචාරයක් නොමැතිව එල්ලී සිටින්න. නමුත් මෙම ප්‍රවේශය sysමනාව ක්‍රියාත්මක වේ
සර්ජි කොලොඩියාෂ්නි

63

සාමාන්‍ය කවචයේදී පමණක් භාවිතා කරන්න

pydoc modules

ඉහත සඳහන් වන්නේ 'නික්ස් වේදිකාවල' පමණක් බව පෙනේ. කෙසේ වෙතත්, මම පහත පරිදි විධානය අනුවර්තනය කරමින් ස්ක්‍රිප්ට් එක සොයාගෙන ධාවනය කළෙමි: c: \ bin \ pythos_2.7 \ lib \ pydoc.py මොඩියුල - එම ලැයිස්තුව සෑදීම සඳහා සදහටම ගත විය, ආකෘතිය උරා බොන අතර එය ස්ථාපිත අනුවාදය මඟ හැරේ අංකය. මම අත්හරින්නම්.
ඩේවිඩ් ඒ. ග්‍රේ

2
@ DavidA.Gray පයිතන් 3 සමඟ වින්ඩෝස් යන්ත්‍රයකින් මෙය උත්සාහ කළ අතර එය ඇත්ත වශයෙන්ම ක්‍රියාත්මක වේ. පයිතන් වින්ඩෝස් දියත් කිරීම භාවිතා කිරීමෙන් ඔබට py -m pydoc modulescmd හෝ Powershell වලින් කළ හැකිය.
වී.කේ.කේ

pydoc modulesපයිතන් 3.6 සමඟ වින්ඩෝස් 10 හි මා වෙනුවෙන් වැඩ කළේ නැත, නමුත් KVKK වෙනස් කිරීම: cmd py -m pydoc modules/ Powershell වලින් ක්‍රියා කරයි.
මාටින්

41

පයිප්ප 10 වන විට, පිළිගත් පිළිතුර තවදුරටත් ක්‍රියාත්මක නොවේ. සංවර්ධන කණ්ඩායම get_installed_distributionsදෛනික කටයුතු සඳහා ප්‍රවේශය ඉවත් කර ඇත . setuptoolsඑකම දේ කිරීම සඳහා විකල්ප කාර්යයක් ඇත . පයිප් 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)

පයිප්පයේ පෙර සංස්කරණ වලද එය ක්‍රියා කරයිද නැද්ද යන්න කරුණාකර මට දන්වන්න.


2
මම මෙම විසඳුම සොයමින් සිටින අතර pkg_resources සොයා ගැනීමට උත්සාහ කරමින් මගේ මොළය බිඳ දමමි. මට මෙය කිහිප වතාවක් වැඩි කළ හැකි නම්. ස්තූතියි, igBig_Al_Tx! යාවත්කාලීන කිරීම: හැර .... මගේ අථත්ය පරිසරය තුළ මම 'පයිප් කැටි කිරීමක්' කර එහි ප්රතිදානය සමඟ සංසන්දනය කරන විට, නැතිවූ පැකේජ තිබේ. එය සිදුවිය හැක්කේ / සිදුවිය හැක්කේ මන්ද යන්න පිළිබඳ කිසියම් අදහසක් තිබේද?
අංක

umbnumberwhun - මෙය ඔබ වෙනුවෙන් වැඩ කිරීම ගැන මට සතුටුයි. මට කණගාටුයි, නමුත් මට ඇති විෂමතාවයට පිළිතුරක් නැත pip freeze; මෙම මාතෘකාව පිළිබඳ මගේ දැනුමේ ගැඹුර තරමක් සීමිතය. පිළිගත් පිළිතුර මට ප්‍රයෝජනවත් නොවූ විට මම විසඳුම සඳහා මගේ මාර්ගය අවුල් කළෙමි. මම එය සම්බන්ධ පිළිතුරක් සමඟ ඒකාබද්ධ කර එය ක්‍රියාත්මක කිරීමට උත්සාහ කළෙමි setuptools.
Big_Al_Tx

github.com/pypa/pip/issues/5243 - ඉවත් කළ ප්‍රවේශය පිළිබඳ සංවර්ධන කණ්ඩායමේ කතාව get_installed_distributions routine.
bl79

79 bl79 - මම හිතන්නේ එය මට යොමු වූ ස්ථානයයි setuptools.
Big_Al_Tx

IgBig_Al_Tx: හොඳයි, මම සෙටප්ටූල්ස් විකල්පය වටා වැඩ කළෙමි (එය මගේ අවශ්‍යතා සඳහා අපැහැදිලි විය) සහ මම මේ සමඟ ගියෙමි: install_pkgs = subprocess.check_output (['pip', 'freeze']) එය හරියටම මම කරනවා එය කිරීමට අවශ්‍යයි .... ඔව් !!
අංක

26

පයිතන් කවචයේ ස්ථාපනය කර ඇති පැකේජ ලැයිස්තුගත කිරීමට අපට අවශ්‍ය නම්, අපට helpපහත පරිදි විධානය භාවිතා කළ හැකිය

>>help('modules package')

23

මම සාමාන්‍යයෙන් pip listපැකේජ ලැයිස්තුවක් ලබා ගැනීමට භාවිතා කරමි (අනුවාදය සමඟ).

ඇත්ත වශයෙන්ම මෙය අථත්ය පරිසරයක ද ක්රියා කරයි. අථත්ය පරිසරය තුළ පමණක් ස්ථාපනය කර ඇති දේ පෙන්වීමට (ගෝලීය පැකේජ නොවේ), භාවිතා කරන්න pip list --local.

pip listහොඳ උදාහරණ කිහිපයක් සමඟින් ලබා ගත හැකි සියලු විකල්ප පෙන්වන ප්‍රලේඛනය මෙන්න .



13

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 for loop වෙනුවට භාවිතා කිරීමට කිසියම් හේතුවක් තිබේද? මම ලිවීම භාවිතා for m in iter_modules()කර එය ක්‍රියාත්මක විය.
ජෝඕ පොන්ටේ

13

කවුළු මත, මෙය cmd වලින් ඇතුළත් කරන්න

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

මෙය මට භාවිතා කළේ: python3 -m pip freeze - python 3.5.3 සඳහා.
dpminusa

මෙය හොඳින් ක්‍රියාත්මක වන අතර ඔබේ විචල්‍යයන් නිර්වචනය කර ඇත්නම් ඔබට ලිබ්ස් නාමාවලියෙහි සිටීමට අවශ්‍ය නොවේ
mcy

12

මම OS X හි අභිරුචි ලෙස ස්ථාපනය කරන ලද පයිතන් 2.7 වෙතට දිව ගියෙමි. ස්ථාපනය කර ඇති මොඩියුල ලැයිස්තුගත කිරීමට X11 අවශ්‍ය විය (උදව් සහ පයිඩොක් යන දෙකම භාවිතා කරමින්).

X11 ස්ථාපනය නොකර සියලුම මොඩියුල ලැයිස්තුගත කිරීමට හැකිවීම සඳහා මම pydoc http-server ලෙස ධාවනය කළෙමි, එනම්:

pydoc -p 12345

එවිට http://localhost:12345/සියලු මොඩියුල බැලීමට සෆාරි යොමු කළ හැකිය.


12

මෙය උපකාරී වනු ඇත

පර්යන්තයේ හෝ 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

9

මෙම විසඳුම මොඩියුල මත පදනම් ප්රාථමික 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- හවුල් පුස්තකාලයක් ලෙස මොඩියුල සඳහා ආනයනකරුවෙක් (සී හෝ සී ++ මත ලියා ඇත)

සම්පූර්ණ කේතය

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

කරුණාකර ඔබ මෙහි ආදම්ගේ ප්රවේශය ඔබේ ප්රවේශය සන්සන්දනය කළ හැක stackoverflow.com/a/23885252/54964
ලියෝ ලියෝපෝල්ඩ් හර්ට්ස් 준영

@ ලියෝ ලියෝපෝල්ඩ් හර්ට්ස්, ඔබට එය අවශ්‍ය ඇයි?
PADYMKO

ඔබේ ප්‍රවේශය ආදම්ගේ ප්‍රවේශයට වඩා හොඳ / නරක වන්නේ කෙසේද යන්න තේරුම් ගැනීම.
Léo Léopold Hertz 준영

1
@ ලියෝ ලියෝපෝල්ඩ් හර්ට්ස්. කෙටි පිළිතුරක්: නිෂ්පාදනයක් තුළ එය ඔබම උත්සාහ කර නිගමනවලට එළඹෙන්න. දිගු පිළිතුර: ආදම්ගේ ප්‍රවේශය පදනම් වී ඇත්තේ pipපයිතන් හි ලියා ඇති මෘදුකාංග පැකේජ ස්ථාපනය කිරීමට සහ කළමනාකරණය කිරීමට භාවිතා කරන පැකේජ කළමනාකරණ පද්ධතිය මත වන අතර එහි ප්‍රති result pip.get_installed_distributions()ලයක් ලෙස නළය සමඟ ස්ථාපනය කර ඇති මොඩියුල ලබා දේ. මගේ පිළිතුර මුළුමනින්ම පදනම් වී ඇත්තේ පයිතන්ගේ සම්මත පුස්තකාලය මත වන අතර ආනයනය සඳහා ඇති සියලුම මොඩියුල ආවරණය කරයි. මගේ පිළිතුර ලොකුම අඩුපාඩුව
CPython

1
@ Léo Léopold Hertz ඔබ වැරදියට තේරුම් ගෙන ඇත, එය එය කරයි. මම එය මගේ පරිගණකයෙන් පරීක්ෂා කළෙමි. මගේ පිළිතුරෙහි විශේෂ අරුතක් ඇත **truncated**, එහිදී ප්‍රතිදානයක් කපා දමනු ලැබේ. සමහර විට ඔබ පරෙස්සම් නොවිය හැකිය, නමුත් එය එසේ නොවේ නම්, ඔබේ පද්ධතිය සහ පයිතන් ක්‍රියාත්මක කිරීම පිළිබඳ තොරතුරු මට එවීමට, මම එය නිවැරදි කිරීම සඳහා අමතර පර්යේෂණ කරන්නෙමි.
PADYMKO

9

අවවාදයයි: ඇඩම් මාතාන් පයිප්ප> 10.0 හි මෙම භාවිතය අධෛර්යමත් කරයි. එසේම, @ sinoroc ගේ අදහස පහතින් කියවන්න

ඇඩම් මාතාන්ගේ පිළිතුරෙන් (පිළිගත් පිළිතුර ) මෙය ආශ්වාදයක් විය :

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සහ රහිතව ස්ථාපනය කරන විට , එකක් ප්‍රමුඛතාවය ගන්නා අතර අනෙක් එක ලැයිස්තුගත නොකෙරේ (එක් ස්ථානයක් පමණක් පෙන්වයි). දේශීය නාමාවලියෙහි ඇති එක පමණක් ලැයිස්තුගත කර ඇති බව මම විශ්වාස කරමි. මෙය වැඩිදියුණු කළ හැකිය.


1
නැත. මෙය නිර්දේශ නොකරයි, මෙහි බලන්න: pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program
sinoroc

1
in සීනොරොක් මෙය පෙන්වා දීමට ස්තූතියි. 1 සිට 3 දක්වා කරුණු මෙම විසඳුමට අදාළ නොවන බව පෙනේ, මන්ද මෙම ස්ක්‍රිප්ටයට pipඑක් වරක් භාවිතා කර පිටවීම යන එකම අරමුණ ඇත . හැසිරීම වෙනස් විය හැකි ගැටළුවක් ලෙස එය පෙනේ.
ඩැනියෙල් එෆ්

එකඟ විය, පොදු API නොමැති වීමට හේතු මෙම විශේෂිත කේත කැබැල්ලට අදාළ නොවේ. නමුත් පොදු API එකක් සහතික කිරීමට පයිප්පයට බැඳී නැති හෙයින්, එහි අභ්‍යන්තර ඒපීඅයි, කේත ව්‍යුහය යනාදිය පසුකාලීන නිකුතුවකදී වෙනස් කිරීමට නිදහස ඇත. අභ්‍යන්තර ඒපීඅයි යනු පොදු ඒවා නොවන අභ්‍යන්තර ඒපීඅයි බව පැහැදිලි කිරීම සඳහා අදහස් කරන ලද පෙර අභ්‍යන්තර කේත ප්‍රතිසංවිධානය අල්ලා ගැනීමට මෙම කේතයට උත්සාහයක් / හැරෙන්නට ඇත්තේ එබැවිනි _internal. සියල්ලට ම, එය පැහැදිලිවම ක්‍රියාත්මක වන නමුත් නරක පුරුද්දකි. වඩා හොඳ විකල්ප තිබේ, සමහර ඒවා මෙම ප්‍රශ්නයට අනෙක් පිළිතුරු වල ඇත.
sinoroc

1
"පයිප්" මොඩියුලය නොමැති නම් මෙම ස්ක්‍රිප්ට් ක්‍රියා නොකරනු ඇත.
ඇලෙක්සැන්ඩර් ස්ටෝර්

9

Pip අනුවාදය නොසලකා ක්‍රියා කරයි

ඔබගේ පයිතන් සංස්කාරකයේ හෝ අයිපයිතන් හි පහත සඳහන් දෑ ක්‍රියාත්මක කරන්න:

import pkg_resources; 
installed_packages = {d.project_name: d.version for d in pkg_resources.working_set}
print(installed_packages)

වෙනත් පිළිතුරු කියවා පයිතන් තුළ වේගවත්ම හා පහසුම වන මෙම සංයෝජනය එකට ඇද ගන්න .

විශේෂිත පැකේජ සොයා ගන්න

එවිට ඔබට පහසුවෙන් ඔබේ නියෝගයෙන් අයිතම ලබා ගත හැකිය, එනම්

installed_packages['pandas'] >> '1.16.4'


pkg_resourcesසෙටප්ටූල් වල කොටසකි . එයට පයිප්පයට වැඩි සම්බන්ධයක් නැත .
sinoroc

යෙප් in සිනොරොක්, නමුත් පිළිගත් පිළිතුර මාතෘකාවේ අභිප්‍රාය වූ පයිප්ප 10 න් ඔබ්බට ක්‍රියා නොකරයි
ජබ්බර්වොකි

ඔබේ විසඳුම මෑත කාලීන පයිප්ප අනුවාදයන්ට පමණක් සීමා නොවන බැවින් ඔබේ මාතෘකාවේ තර්කනය මට තේරෙන්නේ නැත. එය ඕනෑම අනුවාදය සඳහා කටයුතු කළ යුතු එක පිප්ස් එකකට එය භාවිතා නොකරන සිට එක පිප්ස් එකකට සියලු දී. importlib.metadata3.8 සිට ඔබට පයිතන්ගේ සම්මත පුස්තකාලයෙන් බැලීමට අවශ්‍ය විය හැකිය : docs.python.org/3/library/importlib.metadata.html
sinoroc

8

භාවිතා කිරීම හැරුණු විට pip freezeමම මගේ අථත්ය පරිසරවල කහ මදය ස්ථාපනය කර ඇත .


6

ඔබ ඇනකොන්ඩා පයිතන් බෙදාහැරීමක් ස්ථාපනය කර ඇත්නම්, ඔබටද භාවිතා කළ හැකිය

$conda list

ඉහත විස්තර කර ඇති විසඳුම් වලට අමතරව.


ඔබ මෙම රේඛාව ධාවනය කරන්නේ කොහේද / කෙසේද?
HuckIt

ඔබ ඔබේ යුනික්ස් / මැක් ඕඑස් එක්ස් යන්ත්‍රයේ සිටී නම්, ඔබේ පර්යන්තය විවෘත කර ටයිප් කරන්න conda install, එය ක්‍රියාත්මක විය යුතුය :)
ශ්‍රියාස්

මම වින්ඩෝස් 7 යන්ත්‍රයක සිටිමි. මම එය ඇත්ත වශයෙන්ම මගේ මාවතේ සොයාගත්තෙමි, නමුත් conda.exe AppData \ Local \ Continuum \ Anaconda \ Scripts හි ඇත.
HuckIt

6
  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

Sys.modules විධානය නවතම OSX හි Python හි ක්‍රියා නොකරයි. NameError: නම 'පද්ධතිය' යන්න අර්ථ දක්වා නැත .
ලියෝ ලියෝපෝල්ඩ් හර්ට්ස් 준영

@Masi ඔබ අදහස් කළේ /usr/bin/pythonහෝ එක් ආවේ python.org ? කලින් එක සඳහා, මට sys.modulesගැටලුවකින් තොරව භාවිතා කළ හැකිය.
යෙගල්

මම කිව්වේ / usr / bin / python .
Léo Léopold Hertz 준영

As මාසි ඔබ තවමත් මෙම ගැටලුව ගැන උනන්දු වන්නේ දැයි විශ්වාස නැත. පෙනෙන විදිහට ඔබ system.modulesඒ වෙනුවට භාවිතා කරයි sys.modules.
යෙගල්

Lol. මගේ වැරැද්ද නම් මම මුලින් sys -package ආනයනය නොකිරීමයි. ඒ නිසා ධාවනය වෙනුවට ආනයන sys; sys.modules අපේක්ෂිත පරිදි ක්‍රියා කරයි.
ලියෝ ලියෝපෝල්ඩ් හර්ට්ස් 준영

4

පයිප් කැටි කිරීම මඟින් පැකේජ සොයා ගැනීම කෙසේ වෙතත් පයිතන් පැකේජ ඇති සියලුම මාර්ග ලැයිස්තුගත කිරීම සඳහා පහත විධානය ලිවිය හැකිය.

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

4

බළලෙකු සමට ගැනීමට බොහෝ ක්‍රම තිබේ.

  • වඩාත්ම සරල ක්‍රමය වන්නේ pydocශ්‍රිතය කෙලින්ම කවචයෙන් භාවිතා කිරීමයි :
    pydoc modules

  • නමුත් වැඩි විස්තර සඳහා ස්ථාපන දිනයන් ද පවසන පයිප්-ඩේට් නම් මෙවලම භාවිතා කරන්න .
    pip install pip-date


රූප විස්තරය මෙහි ඇතුළත් කරන්න


3

බොහෝ අදහස් ඇත, මුලදී මම මේ දෙක ගැන මෙනෙහි කරමි:

පයිප්ප

cons: සැමවිටම ස්ථාපනය කර නැත

උදව් ('මොඩියුල')

cons: කොන්සෝලය සඳහා ප්‍රතිදානය; බිඳුණු මොඩියුල සමඟ (උබුන්ටු බලන්න ...) segfault කළ හැකිය

මට පහසු ප්‍රවේශයක් අවශ්‍යයි, මූලික පුස්තකාල භාවිතා කරමින් පැරණි පයිතන් 2.x සමඟ අනුකූල වේ

මම ආලෝකය දකිමි : listmodules.py

2.5 හි ප්‍රලේඛන ප්‍රභව නාමාවලියෙහි සඟවා ඇත්තේ පයිතන් ස්ථාපනය සඳහා ඇති සියලුම මොඩියුල ලැයිස්තුගත කරන කුඩා පිටපතකි.

වාසි:

භාවිතා කරන්නේ imp, sys, os, re, time පමණි

Python 1.5.2 සහ නවතම ඒවා ධාවනය කිරීමට නිර්මාණය කර ඇත

ප්‍රභව කේතය සැබවින්ම සංයුක්ත වේ, එබැවින් ඔබට එය සමඟ පහසුවෙන් සම්බන්ධ විය හැකිය, නිදසුනක් ලෙස දෝෂ සහිත මොඩියුලවල ව්‍යතිරේක ලැයිස්තුවක් සම්මත කිරීම (ඒවා ආනයනය කිරීමට උත්සාහ නොකරන්න)


3

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

මා සොයාගත් දෙය නම් සපයන ලද බොටෝ 3 පුස්තකාලය යල්පැන ඇති අතර මගේ කේතය අසමත් වීම මගේ වරදක් නොවේ. මගේ ව්‍යාපෘතියට බොටෝ 3 සහ බොටෝකෝර් එක් කිරීමට මට අවශ්‍ය විය. නමුත් මෙය නොමැතිව මගේ කේතය නරක යැයි සිතමින් මගේ හිස ගසා දමනු ඇත.

{
  "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
  • ලිනක්ස් කර්නලය - 4.14.77-70.59.amzn1.x86_64
  • ජාවාස්ක්‍රිප්ට් සඳහා AWS SDK - 2.290.0 \
  • පයිතන් සඳහා SDK (Boto 3) - 3-1.7.74 botocore-1.10.74

2

මෙන්න ස්ථාපනය කර ඇති මොඩියුල ලැයිස්තුවක් ලබා දෙන පයිතන් කේත විසඳුමක්. අනුවාද අංක ඇතුළත් කිරීම සඳහා කෙනෙකුට පහසුවෙන් කේතය වෙනස් කළ හැකිය.

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)

1

ස්ථාපනය

pip install pkgutil

කේතය

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

නියැදි ප්‍රතිදානය:

multiprocessing
netrc
nntplib
ntpath
nturl2path
numbers
opcode
pickle
pickletools
pipes
pkgutil

0

ඉහත කිසිවක් උපකාරවත් නොවන බව පෙනේ නම්, මගේ පරිසරය තුළ පද්ධති උත්ශ්‍රේණිගත කිරීමකින් බිඳී ගොස් ඇති අතර මට නල යාවත්කාලීන කිරීමට නොහැකි විය. එය ඔබට නිවැරදි ලැයිස්තුවක් ලබා නොදෙන අතර ඔබේ env> lib> python (මෙහි අනුවාදය)> අඩවි පැකේජ> ඇතුළත බැලීමෙන් කුමන පුස්තකාල ස්ථාපනය කර ඇත්ද යන්න පිළිබඳ අදහසක් ඔබට ලබා ගත හැකිය. මෙහිදී ඔබට ස්ථාපනය කර ඇති මොඩියුල පිළිබඳ හොඳ ඇඟවීමක් ලැබෙනු ඇත.


-2

pip listපයිතන් වැඩසටහනකින් අමතන්නේ කෙසේදැයි කල්පනා කරන ඕනෑම කෙනෙකුට ඔබට පහත සඳහන් දෑ භාවිතා කළ හැකිය:

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

නැත. මෙය නිර්දේශ නොකරයි, මෙහි බලන්න: pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program
sinoroc

-10

කවචයෙන්

ls site-packages

එය ප්‍රයෝජනවත් නොවේ නම්, ඔබට මෙය කළ හැකිය.

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

එයින් නිපදවන දේ බලන්න.


කුමන අඩවි පැකේජ නාමාවලිය? මෙය වඩා හොඳ වනු ඇත: ls / usr / {local /,} lib / python $ (python -V 2> & 1 | cut -d "" -f2 | cut -d. -F1-2) / site-packages
vezult

එසේම මෙය අභිරුචි PYTHONPATH හි සාදන ලද මොඩියුල හෝ මොඩියුල හෝ සෙටප්ටූල් "සංවර්ධන මාදිලියේ" ස්ථාපනය කර ඇති ඒවා නොපෙන්වයි
dF.

මම මොඩියුල ස්ථාපනය කර ඇතත් මගේ /usr/local/lib/python2.5/site-packages හිස් ය.
Léo Léopold Hertz 준영

14
මෙම පහත් පිළිතුර මකා නොදැමීම සඳහා ප්‍රශංසාව. පොදු පිළිතුරක් වැරදි ලෙස සලකන්නේ මන්දැයි බැලීමට හැකිවීම ප්‍රජාවට ප්‍රයෝජනවත් වේ.
ජෙරමි ස්ටයින්

1
@ ජෙරමිස්ටයින් වඩා හොඳ උපාය මාර්ගයක් (වඩා ප්‍රයෝජනවත් සහ අඩු හානියක් අඩු) බොහෝ විට එය වැරදිසහගත වීමට හේතුව පැහැදිලි කිරීම සඳහා ප්‍රශ්නය සංස්කරණය කිරීම විය හැකිය, මෙය අදහස් දැක්වීමේදී පැහැදිලි කළ පසු ...
කයිල් ස්ට්‍රෑන්ඩ්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.