මගේ පයිතන් ස්ථාපනය (යුනික්ස් සේවාදායකය) තුළ ඇති පයිතන් මොඩියුල ලැයිස්තුවක් ලබා ගැනීමට මම කැමතියි.
ඔබේ පරිගණකයේ ස්ථාපනය කර ඇති පයිතන් මොඩියුල ලැයිස්තුවක් ලබා ගන්නේ කෙසේද?
pip list
?
මගේ පයිතන් ස්ථාපනය (යුනික්ස් සේවාදායකය) තුළ ඇති පයිතන් මොඩියුල ලැයිස්තුවක් ලබා ගැනීමට මම කැමතියි.
ඔබේ පරිගණකයේ ස්ථාපනය කර ඇති පයිතන් මොඩියුල ලැයිස්තුවක් ලබා ගන්නේ කෙසේද?
pip list
?
Answers:
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
ගොනුව.
ප්රලේඛනය තුළ මෙම ගැටලුව පිළිබඳ කිසිදු සඳහනක් මට සොයාගත නොහැකි විය. සමහර විට මම ඒ සඳහා දෝෂයක් විවෘත කරමි.
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')
පයිතන් කවචයක / විමසුමේ.
pydoc modules
වැඩ කරයි. ඔබ එය පිළිතුරක් ලෙස ඉදිරිපත් කළ යුතුය.
python -c 'help("modules")'
දැන්, මෙම ක්රම මා විසින්ම අත්හදා බැලූ අතර, ප්රචාරය කළ දේ හරියටම මට ලැබුණි: සියලුම මොඩියුල.
අහෝ, ඇත්ත වශයෙන්ම ඔබ stdlib ගැන එතරම් තැකීමක් නොකරයි, ඔබ දන්නවා පයිතන් ස්ථාපනයකින් ඔබට ලැබෙන දේ.
ඇත්තටම, මම ඒ දේවල් අවශ්ය මම ස්ථාපනය කළා.
ඇත්ත වශයෙන්ම, පුදුමයට කරුණක් නම්, හොඳින් වැඩ කළ දෙය නම්:
pip freeze
ආපසු පැමිණි:
Fabric==0.9.3
apache-libcloud==0.4.0
bzr==2.3b4
distribute==0.6.14
docutils==0.7
greenlet==0.3.1
ipython==0.10.1
iterpipes==0.4
libxml2-python==2.6.21
මම "පුදුම සහගත" යැයි කියන්නේ පැකේජ ස්ථාපනය කිරීමේ මෙවලම මෙම ක්රියාකාරීත්වය සොයා ගැනීමට අපේක්ෂා කරන නිශ්චිත ස්ථානය වන අතර, එය 'කැටි කිරීම' යන නාමයෙන් නොව පයිතන් ඇසුරුම්කරණය ඉතා අමුතුයි, මෙම මෙවලම අර්ථවත් වන බව මට හැඟේ. පිප් 0.8.2, පයිතන් 2.7.
පයිප් අනුවාදය 1.3 සිට, ඔබට මෙයට ප්රවේශය ඇත:
pip list
එය "පයිප්ප කැටි කිරීම" සඳහා සින්ටැක්ටික් සීනි ලෙස පෙනේ. එය ඔබගේ ස්ථාපනය හෝ virtualenv ට අදාළ සියලුම මොඩියුලයන් ඒවායේ අනුවාද අංක සමඟ ලැයිස්තුගත කරනු ඇත. අවාසනාවකට එය කිසිදු මොඩියුලයක වත්මන් අනුවාද අංකය පෙන්වන්නේ නැත, ඔබේ පිඟන් සෝදන්නේ හෝ සපත්තු බබළන්නේ නැත.
pip list
සරලම හා හොඳම වේ. මෙන්න විකල්ප සහ විස්තර.
දී ipython
ඔබ "ටයිප් කළ හැක import
Tab."
සම්මත පයිතන් පරිවර්තකයේදී ඔබට " help('modules')
" ටයිප් කළ හැකිය .
විධාන රේඛාවේදී, ඔබට භාවිතා කළ හැකිය .pydoc
modules
පිටපතක, අමතන්න pkgutil.iter_modules()
.
pkgutil.iter_modules()
ක්රියා කරයි, ඉහත නල විසඳුම සියලුම පැකේජ ලැයිස්තුගත නොකරයි, පයිප්ප හරහා ස්ථාපනය කර ඇති ඒවා පමණි.
python -c 'import pkgutil;print [x[1] for x in list(pkgutil.iter_modules())]'
. එය සියලුම මොඩියුලයේ නම් විශාල පයිතන් ලැයිස්තුවක් ලෙස බැහැර කළ යුතුය. මෙම x[1]
ටිකක් මගින් ජනනය කරන ලද tuples පිටතට මොඩියුල නාමය පැහැර ගන්නට කිසිවෙකුට භාවිතා pkgutil.iter_modules()
.
දැනට භාවිතා කරන මොඩියුල බැලීමට මම මෙය භාවිතා කරමි:
import sys as s
s.modules.keys()
එය ඔබගේ පයිතන් මත ධාවනය වන සියලුම මොඩියුල පෙන්වයි.
සියලු සාදන ලද මොඩියුල සඳහා:
s.modules
එය සියලු මොඩියුල සහ ආනයන වස්තු අඩංගු නියෝගයකි.
pydoc
හෝ pip
ස්ථාපනය කර නොමැති සීමිත පද්ධති මත ක්රියා කරන එකම ක්රමය මෙය වන බැවිනි (මගේ නඩුවේ NAS).
help('modules')
මට ප්රතිචාරයක් නොමැතිව එල්ලී සිටින්න. නමුත් මෙම ප්රවේශය sys
මනාව ක්රියාත්මක වේ
සාමාන්ය කවචයේදී පමණක් භාවිතා කරන්න
pydoc modules
py -m pydoc modules
cmd හෝ Powershell වලින් කළ හැකිය.
pydoc modules
පයිතන් 3.6 සමඟ වින්ඩෝස් 10 හි මා වෙනුවෙන් වැඩ කළේ නැත, නමුත් KVKK වෙනස් කිරීම: cmd py -m pydoc modules
/ Powershell වලින් ක්රියා කරයි.
පයිප්ප 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)
පයිප්පයේ පෙර සංස්කරණ වලද එය ක්රියා කරයිද නැද්ද යන්න කරුණාකර මට දන්වන්න.
pip freeze
; මෙම මාතෘකාව පිළිබඳ මගේ දැනුමේ ගැඹුර තරමක් සීමිතය. පිළිගත් පිළිතුර මට ප්රයෝජනවත් නොවූ විට මම විසඳුම සඳහා මගේ මාර්ගය අවුල් කළෙමි. මම එය සම්බන්ධ පිළිතුරක් සමඟ ඒකාබද්ධ කර එය ක්රියාත්මක කිරීමට උත්සාහ කළෙමි setuptools
.
get_installed_distributions routine
.
setuptools
.
මම සාමාන්යයෙන් pip list
පැකේජ ලැයිස්තුවක් ලබා ගැනීමට භාවිතා කරමි (අනුවාදය සමඟ).
ඇත්ත වශයෙන්ම මෙය අථත්ය පරිසරයක ද ක්රියා කරයි. අථත්ය පරිසරය තුළ පමණක් ස්ථාපනය කර ඇති දේ පෙන්වීමට (ගෝලීය පැකේජ නොවේ), භාවිතා කරන්න pip list --local
.
pip list
හොඳ උදාහරණ කිහිපයක් සමඟින් ලබා ගත හැකි සියලු විකල්ප පෙන්වන ප්රලේඛනය මෙන්න .
මේවා උත්සාහ කරන්න
pip list
හෝ
pip freeze
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()
කර එය ක්රියාත්මක විය.
මම OS X හි අභිරුචි ලෙස ස්ථාපනය කරන ලද පයිතන් 2.7 වෙතට දිව ගියෙමි. ස්ථාපනය කර ඇති මොඩියුල ලැයිස්තුගත කිරීමට X11 අවශ්ය විය (උදව් සහ පයිඩොක් යන දෙකම භාවිතා කරමින්).
X11 ස්ථාපනය නොකර සියලුම මොඩියුල ලැයිස්තුගත කිරීමට හැකිවීම සඳහා මම pydoc http-server ලෙස ධාවනය කළෙමි, එනම්:
pydoc -p 12345
එවිට http://localhost:12345/
සියලු මොඩියුල බැලීමට සෆාරි යොමු කළ හැකිය.
පර්යන්තයේ හෝ 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
මෙම විසඳුම මොඩියුල මත පදනම් ප්රාථමික importlib
හා pkgutil
හා CPython 3.4 සහ CPython 3.5 සමග වැඩ, නමුත් CPython 2 සඳහා සහායක් නැත.
පැහැදිලි කිරීම
sys.builtin_module_names
- සියලු බිල්ට් මොඩියුල නම් කරන්න (මගේ පිළිතුර මෙතැනින් බලන්න )pkgutil.iter_modules()
- පවතින සියලුම මොඩියුල පිළිබඳ තොරතුරු ලබා දෙයිimportlib.util.find_spec()
- මොඩියුලය ආනයනය කිරීම පිළිබඳ තොරතුරු තිබේ නම් එය ලබා දෙයිBuiltinImporter
- බිල්ට් මොඩියුල සඳහා ආනයනකරුවෙක් ( ලියකියවිලි )SourceFileLoader
- සම්මත පයිතන් මොඩියුලයක් සඳහා ආනයනකරුවෙක් (පෙරනිමියෙන් * .py දිගුව ඇත) ( ලියකියවිලි )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*******************************)
pip
පයිතන් හි ලියා ඇති මෘදුකාංග පැකේජ ස්ථාපනය කිරීමට සහ කළමනාකරණය කිරීමට භාවිතා කරන පැකේජ කළමනාකරණ පද්ධතිය මත වන අතර එහි ප්රති result pip.get_installed_distributions()
ලයක් ලෙස නළය සමඟ ස්ථාපනය කර ඇති මොඩියුල ලබා දේ. මගේ පිළිතුර මුළුමනින්ම පදනම් වී ඇත්තේ පයිතන්ගේ සම්මත පුස්තකාලය මත වන අතර ආනයනය සඳහා ඇති සියලුම මොඩියුල ආවරණය කරයි. මගේ පිළිතුර ලොකුම අඩුපාඩුව
**truncated**
, එහිදී ප්රතිදානයක් කපා දමනු ලැබේ. සමහර විට ඔබ පරෙස්සම් නොවිය හැකිය, නමුත් එය එසේ නොවේ නම්, ඔබේ පද්ධතිය සහ පයිතන් ක්රියාත්මක කිරීම පිළිබඳ තොරතුරු මට එවීමට, මම එය නිවැරදි කිරීම සඳහා අමතර පර්යේෂණ කරන්නෙමි.
අවවාදයයි: ඇඩම් මාතාන් පයිප්ප> 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
සහ රහිතව ස්ථාපනය කරන විට , එකක් ප්රමුඛතාවය ගන්නා අතර අනෙක් එක ලැයිස්තුගත නොකෙරේ (එක් ස්ථානයක් පමණක් පෙන්වයි). දේශීය නාමාවලියෙහි ඇති එක පමණක් ලැයිස්තුගත කර ඇති බව මම විශ්වාස කරමි. මෙය වැඩිදියුණු කළ හැකිය.
pip
එක් වරක් භාවිතා කර පිටවීම යන එකම අරමුණ ඇත . හැසිරීම වෙනස් විය හැකි ගැටළුවක් ලෙස එය පෙනේ.
_internal
. සියල්ලට ම, එය පැහැදිලිවම ක්රියාත්මක වන නමුත් නරක පුරුද්දකි. වඩා හොඳ විකල්ප තිබේ, සමහර ඒවා මෙම ප්රශ්නයට අනෙක් පිළිතුරු වල ඇත.
ඔබගේ පයිතන් සංස්කාරකයේ හෝ අයිපයිතන් හි පහත සඳහන් දෑ ක්රියාත්මක කරන්න:
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
සෙටප්ටූල් වල කොටසකි . එයට පයිප්පයට වැඩි සම්බන්ධයක් නැත .
importlib.metadata
3.8 සිට ඔබට පයිතන්ගේ සම්මත පුස්තකාලයෙන් බැලීමට අවශ්ය විය හැකිය : docs.python.org/3/library/importlib.metadata.html
භාවිතා කිරීම හැරුණු විට pip freeze
මම මගේ අථත්ය පරිසරවල කහ මදය ස්ථාපනය කර ඇත .
ඔබ ඇනකොන්ඩා පයිතන් බෙදාහැරීමක් ස්ථාපනය කර ඇත්නම්, ඔබටද භාවිතා කළ හැකිය
$conda list
ඉහත විස්තර කර ඇති විසඳුම් වලට අමතරව.
conda install
, එය ක්රියාත්මක විය යුතුය :)
sys.modules
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
/usr/bin/python
හෝ එක් ආවේ python.org ? කලින් එක සඳහා, මට sys.modules
ගැටලුවකින් තොරව භාවිතා කළ හැකිය.
system.modules
ඒ වෙනුවට භාවිතා කරයි sys.modules
.
පයිප් කැටි කිරීම මඟින් පැකේජ සොයා ගැනීම කෙසේ වෙතත් පයිතන් පැකේජ ඇති සියලුම මාර්ග ලැයිස්තුගත කිරීම සඳහා පහත විධානය ලිවිය හැකිය.
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
බළලෙකු සමට ගැනීමට බොහෝ ක්රම තිබේ.
වඩාත්ම සරල ක්රමය වන්නේ pydoc
ශ්රිතය කෙලින්ම කවචයෙන් භාවිතා කිරීමයි :
pydoc modules
නමුත් වැඩි විස්තර සඳහා ස්ථාපන දිනයන් ද පවසන පයිප්-ඩේට් නම් මෙවලම භාවිතා කරන්න .
pip install pip-date
බොහෝ අදහස් ඇත, මුලදී මම මේ දෙක ගැන මෙනෙහි කරමි:
පයිප්ප
cons: සැමවිටම ස්ථාපනය කර නැත
උදව් ('මොඩියුල')
cons: කොන්සෝලය සඳහා ප්රතිදානය; බිඳුණු මොඩියුල සමඟ (උබුන්ටු බලන්න ...) segfault කළ හැකිය
මට පහසු ප්රවේශයක් අවශ්යයි, මූලික පුස්තකාල භාවිතා කරමින් පැරණි පයිතන් 2.x සමඟ අනුකූල වේ
මම ආලෝකය දකිමි : listmodules.py
2.5 හි ප්රලේඛන ප්රභව නාමාවලියෙහි සඟවා ඇත්තේ පයිතන් ස්ථාපනය සඳහා ඇති සියලුම මොඩියුල ලැයිස්තුගත කරන කුඩා පිටපතකි.
වාසි:
භාවිතා කරන්නේ imp, sys, os, re, time පමණි
Python 1.5.2 සහ නවතම ඒවා ධාවනය කිරීමට නිර්මාණය කර ඇත
ප්රභව කේතය සැබවින්ම සංයුක්ත වේ, එබැවින් ඔබට එය සමඟ පහසුවෙන් සම්බන්ධ විය හැකිය, නිදසුනක් ලෙස දෝෂ සහිත මොඩියුලවල ව්යතිරේක ලැයිස්තුවක් සම්මත කිරීම (ඒවා ආනයනය කිරීමට උත්සාහ නොකරන්න)
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
මෙන්න ස්ථාපනය කර ඇති මොඩියුල ලැයිස්තුවක් ලබා දෙන පයිතන් කේත විසඳුමක්. අනුවාද අංක ඇතුළත් කිරීම සඳහා කෙනෙකුට පහසුවෙන් කේතය වෙනස් කළ හැකිය.
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 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
ඉහත කිසිවක් උපකාරවත් නොවන බව පෙනේ නම්, මගේ පරිසරය තුළ පද්ධති උත්ශ්රේණිගත කිරීමකින් බිඳී ගොස් ඇති අතර මට නල යාවත්කාලීන කිරීමට නොහැකි විය. එය ඔබට නිවැරදි ලැයිස්තුවක් ලබා නොදෙන අතර ඔබේ env> lib> python (මෙහි අනුවාදය)> අඩවි පැකේජ> ඇතුළත බැලීමෙන් කුමන පුස්තකාල ස්ථාපනය කර ඇත්ද යන්න පිළිබඳ අදහසක් ඔබට ලබා ගත හැකිය. මෙහිදී ඔබට ස්ථාපනය කර ඇති මොඩියුල පිළිබඳ හොඳ ඇඟවීමක් ලැබෙනු ඇත.
pip list
පයිතන් වැඩසටහනකින් අමතන්නේ කෙසේදැයි කල්පනා කරන ඕනෑම කෙනෙකුට ඔබට පහත සඳහන් දෑ භාවිතා කළ හැකිය:
import pip
pip.main(['list]) # this will print all the packages
කවචයෙන්
ls site-packages
එය ප්රයෝජනවත් නොවේ නම්, ඔබට මෙය කළ හැකිය.
import sys
import os
for p in sys.path:
print os.listdir( p )
එයින් නිපදවන දේ බලන්න.