আমি পাইথন মডিউলগুলির একটি তালিকা পেতে চাই, যা আমার পাইথন ইনস্টলেশন (ইউএনআইএক্স সার্ভার) এ রয়েছে।
আপনি কীভাবে আপনার কম্পিউটারে পাইথন মডিউলগুলির একটি তালিকা ইনস্টল করতে পারেন?
আমি পাইথন মডিউলগুলির একটি তালিকা পেতে চাই, যা আমার পাইথন ইনস্টলেশন (ইউএনআইএক্স সার্ভার) এ রয়েছে।
আপনি কীভাবে আপনার কম্পিউটারে পাইথন মডিউলগুলির একটি তালিকা ইনস্টল করতে পারেন?
উত্তর:
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
।
আমি এই কলটির ফলাফলটি আমার ফ্লাস্ক সার্ভারে যুক্ত করেছি, তাই যখন আমি এটির সাথে কল করি 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) $
সাথে গিট রেপো ক্লোন করুন 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
গিট রেপো থেকে পাইথন প্যাকেজ ইনস্টল করুন
(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
ফাইল।
ডকুমেন্টেশনে আমি এই বিষয়ে কোনও রেফারেন্স পাইনি find সম্ভবত আমি এটির জন্য একটি বাগ খুলব।
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
আমি "আশ্চর্যরূপে" বলছি কারণ প্যাকেজ ইনস্টল সরঞ্জামটি সঠিকভাবে এই কার্যকারিতাটি সন্ধান করার প্রত্যাশা করবে, যদিও এটি 'ফ্রিজ' নামে নয় তবে পাইথন প্যাকেজিংটি এতটাই অদ্ভুত, যে আমি এই সরঞ্জামটি বোধগম্য করেছি fla পাইপ 0.8.2, পাইথন 2.7।
পাইপ সংস্করণ 1.3 থেকে, আপনি এতে অ্যাক্সেস পেয়েছেন:
pip list
যা "পাইপ হিম" এর সিনট্যাকটিক চিনি বলে মনে হচ্ছে। এটি আপনার ইনস্টলেশন বা ভার্চুয়ালেনভের বিশেষত সমস্ত মডিউলগুলির সংস্করণ সংখ্যাগুলির সাথে তালিকাবদ্ধ করবে। দুর্ভাগ্যক্রমে এটি কোনও মডিউলের বর্তমান সংস্করণ নম্বর প্রদর্শন করে না, এটি আপনার থালাগুলি ধৌত করে না বা আপনার জুতো ঝলমল করে না।
pip list --local
মধ্যে পার্থক্য করার জন্যও রয়েছে । 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
যা একটি ডিক যা সমস্ত মডিউল এবং আমদানি করে containing
pydoc
না হয় pip
ইনস্টল করে নি ((আমার ক্ষেত্রে একটি এনএএস) নেই।
help('modules')
আমার জন্য কোনও প্রতিক্রিয়া ছাড়াই কেবল ঝুলে আছে। তবে এই পদ্ধতিটি sys
পুরোপুরি কাজ করে
সাধারণ শেলটিতে কেবল ব্যবহার করুন
pydoc modules
py -m pydoc modules
আপনি সেমিডি বা পাওয়ারশেল করতে পারেন ।
pydoc modules
পাইথন ৩.6 এর সাথে উইন্ডোজ 10 এ আমার পক্ষে কাজ করেনি, তবে @VKK পরিবর্তন: সেমিডি py -m pydoc modules
/ পাওয়ারশেলটিতে কাজ করে।
পিপ 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
বেশ কয়েকটি ভাল উদাহরণ সহ সমস্ত উপলভ্য বিকল্পগুলি দেখায় এখানে ডকুমেন্টেশন রয়েছে ।
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()
এবং এটি কাজ করে।
আমি ওএস এক্স-তে একটি কাস্টম ইনস্টলড পাইথন ২.7 এ গিয়েছি installed এটি ইনস্টলড মডিউলগুলি (সহায়তা এবং পাইডোক উভয় ব্যবহার করে) তালিকাভুক্ত করার জন্য এক্স 11 প্রয়োজন।
এক্স 11 ইনস্টল না করেই সমস্ত মডিউল তালিকাভুক্ত করতে আমি পাইডোককে HTTP- সার্ভার হিসাবে চালিয়েছি, অর্থাত:
pydoc -p 12345
তারপরে http://localhost:12345/
সমস্ত মডিউল দেখতে সাফারিকে নির্দেশ দেওয়া সম্ভব ।
টার্মিনাল বা আইপিথনে টাইপ করুন:
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()
ব্যবহার
সিপিথন ৩.৫ এর জন্য (বিচ্ছিন্ন)
$ 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*******************************)
সিপিথন ৩.৪ এর জন্য (বিচ্ছিন্ন)
$ 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
পাইথনে লিখিত সফ্টওয়্যার প্যাকেজ ইনস্টল ও পরিচালনা করতে ব্যবহৃত প্যাকেজ পরিচালনা ব্যবস্থার উপর ভিত্তি করে অ্যাডামের পদ্ধতির উপর ভিত্তি করে এবং pip.get_installed_distributions()
পাইপের সাহায্যে ইনস্টল করা ফলাফলের মডিউল। আমার উত্তরটি পাইথনের স্ট্যান্ডার্ড লাইব্রেরির উপর ভিত্তি করে আমদানির জন্য উপলব্ধ সমস্ত মডিউলকে কভার করে। একটি বড় অসুবিধা আমার উত্তর - সিপিথন ২ এর জন্য কোনও সমর্থন নেই
**truncated**
, যেখানে একটি আউটপুট কেটে দেওয়া হয়েছে। হতে পারে আপনি সাবধান হন না, তবে এটি যদি তা না করে তবে আপনার সিস্টেম এবং পাইথন বাস্তবায়ন সম্পর্কে আমাকে একটি তথ্য প্রেরণ করার জন্য, আমি এটি ঠিক করার জন্য অতিরিক্ত গবেষণা করব research
সতর্কতা: অ্যাডাম মাতান পিপ> 10.0 এ এই ব্যবহারকে নিরুৎসাহিত করে। এছাড়াও, নীচে @ সিনোরোকের মন্তব্য পড়ুন
এটি আদম মতানের জবাব (স্বীকৃত) দ্বারা অনুপ্রাণিত হয়েছিল :
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
)। সব মিলিয়ে, এটি স্পষ্টতই কাজ করে তবে এটি খারাপ অভ্যাস। আরও ভাল বিকল্প আছে, কিছু এই প্রশ্নের অন্য উত্তরে রয়েছে।
ব্যবহার বাদে 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
বা পাইথন.আর.আর্গ থেকে এসেছে ? আগেরটির জন্য, আমি sys.modules
কোনও সমস্যা ছাড়াই ব্যবহার করতে পারি ।
system.modules
পরিবর্তে ব্যবহার করছেন sys.modules
।
আপনার পাইথন সম্পাদক বা আইপিথনে নিম্নলিখিতটি চালান
import pkg_resources;
installed_packages = {d.project_name: d.version for d in pkg_resources.working_set}
print(installed_packages)
অন্যান্য উত্তরগুলি পড়ুন এবং পাইথনের অভ্যন্তরে দ্রুত এবং সহজতম এই কম্বোটি একসাথে টানুন
অনেক ধারণা আছে, প্রাথমিকভাবে আমি এই দুটি নিয়ে চিন্তা করছি:
বীচি
কনস: সর্বদা ইনস্টল করা হয় না
সাহায্যের ( 'মডিউল')
কনসোল: আউটপুট থেকে কনসোল; ভাঙ্গা মডিউলগুলির সাথে (উবুন্টু দেখুন ...) সেগফল্ট করতে পারে
বেসিক লাইব্রেরিগুলি ব্যবহার করে এবং পুরাতন অজগর ২.x এর সাথে সামঞ্জস্যপূর্ণ আমার একটি সহজ পদ্ধতির দরকার
এবং আমি আলো দেখতে পাচ্ছি: listmodules.py
2.5 তে ডকুমেন্টেশন সোর্স ডিরেক্টরিতে লুকানো একটি ছোট স্ক্রিপ্ট যা পাইথন ইনস্টলেশনের জন্য সমস্ত উপলব্ধ মডিউল তালিকাভুক্ত করে।
পেশাদাররা:
কেবলমাত্র ইমপি, সি, ওস, পুনরায় সময় ব্যবহার করে
পাইথন 1.5.2 এ চালানোর জন্য ডিজাইন করা এবং আরও নতুন
উত্স কোডটি সত্যই কমপ্যাক্ট, সুতরাং আপনি এটির সাথে সহজেই টিঙ্কিং করতে পারেন, উদাহরণস্বরূপ বগি মডিউলগুলির একটি ব্যতিক্রম তালিকা পাস করতে (সেগুলি আমদানির চেষ্টা করবেন না)
আমার এডাব্লুএস ল্যাম্বডায় ডিফল্টরূপে প্যাকেজগুলির নির্দিষ্ট সংস্করণটি খুঁজে পাওয়া দরকার। আমি এই পৃষ্ঠা থেকে ধারণাগুলির একটি ম্যাসআপ দিয়ে তা করেছি। আমি এটি উত্তরোত্তর জন্য ভাগ করছি।
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
},
...
আমি যা আবিষ্কার করেছি তা তারা আনুষ্ঠানিকভাবে প্রকাশিত থেকে পৃথক ছিল । এটি লেখার সময়:
- অপারেটিং সিস্টেম - অ্যামাজন লিনাক্স
- এএমআই - amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2
- লিনাক্স কার্নেল - 4.14.77-70.59.amzn1.x86_64
- জাভাস্ক্রিপ্টের জন্য AWS SDK - 2.290.0 \
- পাইথনের জন্য এসডিকে (বোটো 3) - 3-1.7.74 বোটোকোর -১.10.74
স্থাপন
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
এখানে পাইথন কোড সমাধানটি ইনস্টল করা মডিউলগুলির একটি তালিকা ফিরিয়ে দেবে। সংস্করণ নম্বর অন্তর্ভুক্ত করার জন্য কেউ কোডটি সহজেই সংশোধন করতে পারে।
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
পাইথন প্রোগ্রাম থেকে কীভাবে কল করবেন সে সম্পর্কে যে কেউ ভাবছেন আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:
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 )
এবং দেখুন যে কি উত্পাদন করে।