পাইথনে সমস্ত ইনস্টল করা প্যাকেজ এবং তাদের সংস্করণগুলি কীভাবে তালিকাভুক্ত করবেন?


128

পাইথনে কি সমস্ত ইনস্টলড প্যাকেজ এবং তাদের সংস্করণগুলি তালিকাভুক্ত করার উপায় আছে?

আমি জানি আমি ভিতরে যেতে পারি python/Lib/site-packagesএবং কোন ফাইল এবং ডিরেক্টরি বিদ্যমান তা দেখতে পারি তবে আমি এটি দেখতে খুব বিশ্রী মনে করি। আমি কি এমন কিছু বিষয় যা অনুরূপ খুঁজছি npm listঅর্থাত npm-ম


উত্তর:


196

আপনার যদি পাইপ ইনস্টল থাকে এবং আপনি কীভাবে প্যাকেজগুলি ইনস্টল করেছেন তা আপনার ইনস্টলার ইনস্টলারের সরঞ্জামগুলির সাথে দেখতে চান তবে আপনি কেবল এটিকে কল করতে পারেন:

pip freeze

এটি ইনস্টল করা প্যাকেজগুলির সংস্করণ নম্বরগুলিও অন্তর্ভুক্ত করবে।

হালনাগাদ

পিপ pip freezeকল করেও একই আউটপুট উত্পাদন করতে আপডেট করা হয়েছে :

pip list

বিঃদ্রঃ

থেকে প্রাপ্ত আউটপুটটি pip listআলাদাভাবে ফর্ম্যাট করা হয়েছে, সুতরাং আপনার যদি শেল স্ক্রিপ্ট থাকে যা আউটপুট (সম্ভবত সংস্করণ নম্বরটি ধরতে পারে) এর পার্স করে freezeএবং আপনার স্ক্রিপ্টটি কল listকরতে পরিবর্তন করতে চায় তবে আপনার পার্সিং কোডটি পরিবর্তন করতে হবে।


9
আইএমএইচও তাদের pip listএকটি উপনাম হিসাবে সরবরাহ করা উচিত pip freeze। এটি লেখার স্বজ্ঞাত pip freeze > requirements.txt, তবে তা নয় pip freeze
jsalonen

3
WOW: সবেমাত্র পিপের সর্বশেষ সংস্করণটির ডকুমেন্টেশন সন্ধান করেছে এবং দেখে মনে হচ্ছে তারা যুক্ত করেছেন pip list: পিপ-installer.org/en/latest/usage.html#pip-list - সুতরাং এটি আসলে এমন কিছু যা ইতিমধ্যে আসছে!
jsalonen

51

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

5
এটা সহজ! আমি যদিও সংস্করণগুলি দেখতে পছন্দ করি।
jsalonen

4
আমি মনে করি সমস্যাটি সংস্করণটি সহ কোনও মানসম্মত উপায় নেই ... কখনও কখনও এর Package.version()বা package.__version__বা package.verবা অন্য কোনও সম্ভাবনার সংখ্যা রয়েছে
জোড়ান ব্যাসলি

আমি ভেবেছিলাম পাইথনের মূলমন্ত্রটি ছিল "এটি করার একমাত্র উপায় আছে";)?
এড র্যান্ডাল

3
@ এডিআর্যান্ডল, না - এটি "এটি করার একটি সুস্পষ্ট উপায়"। একটি অদ্বিতীয় উপায় সবসময় আছে। এছাড়াও, সঠিক শব্দটি হ'ল: একটি হওয়া উচিত - এবং এটি করার জন্য কেবলমাত্র একটিই - স্পষ্টত উপায়। যদিও আপনি ডাচ না হলে প্রথমে সেই উপায়টি স্পষ্ট নাও হতে পারে।
রসুয়াভ

30

আপনি যদি ইনস্টলড পাইথন বিতরণ সম্পর্কে তথ্য পেতে চান এবং এর জন্য আপনার সিএমডি কনসোল বা টার্মিনালটি ব্যবহার করতে না চান তবে পাইথন কোডের মাধ্যমে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন (পাইথন ৩.৪ দিয়ে পরীক্ষা করা):

import pip #needed to use the pip functions
for i in pip.get_installed_distributions(local_only=True):
    print(i)

pip.get_installed_distributions(local_only=True)ফাংশন-কল করবেন তা একটি iterable ফেরৎ কারণ জন্য-লুপ এবং মুদ্রণ ফাংশন উপাদানের মধ্যে অন্তর্ভুক্ত iterable আউট ছাপা হয় নতুন লাইন অক্ষর দ্বারা পৃথক ( \n)। ফলাফলটি (আপনার ইনস্টলড ডিস্ট্রিবিউশনগুলির উপর নির্ভর করে) এরকম কিছু দেখায়:

cycler 0.9.0
decorator 4.0.4
ipykernel 4.1.0
ipython 4.0.0
ipython-genutils 0.1.0
ipywidgets 4.0.3
Jinja2 2.8
jsonschema 2.5.1
jupyter 1.0.0
jupyter-client 4.1.1
#... and so on...

4
@ Exhuma এর মন্তব্যে প্রসারণ করতে, পিপ 10 দিয়ে আপনার ব্যবহার করা উচিত: pkg_resources.working_set_d এ d এর জন্য পিকেজি_সোর্সগুলি [মুদ্রণ (ডি। প্রজেক্ট_নাম) আমদানি করুন
অ্যালামন

এর অবস্থা কী pkg_resources? এএএফআইসিআর এটির একটি অংশ setuptools। না pip। আমরা কি নিরাপদে ধরে নিতে পারি যে setuptoolsকেবলমাত্র নির্ভর করে এহেন সর্বদা উপলব্ধ থাকবে pip?
exhuma

9

আপনি চেষ্টা করতে পারেন: কুসুম

কুসুম ইনস্টল করার জন্য, চেষ্টা করুন:

easy_install yolk

ইয়র্ক ইনস্টলড পাইথন প্যাকেজগুলি এবং পাইপিআই (পাইথন প্যাকেজ সূচক) -এ উপলভ্য প্যাকেজগুলির অনুসন্ধানের তথ্য পাওয়ার জন্য পাইথনের একটি সরঞ্জাম।

আপনি দেখতে পাচ্ছেন কোন প্যাকেজগুলি সক্রিয়, অ-অ্যাক্টিভ বা উন্নয়ন মোডে রয়েছে এবং পাইপিআই অনুসন্ধান করে নতুন সংস্করণ উপলব্ধ রয়েছে তা আপনাকে দেখাতে পারে।


আমি এই সময়ে সাধারণত এই কাজের জন্য পাইপ ব্যবহার করি তবে আমার একটি খুব পুরানো প্রকল্প রয়েছে যা আমি বিতরণে যোগ করতে প্রস্তুত নই এবং আমার মনে আছে সেখানে এই জাতীয় একটি সরঞ্জাম ছিল। যদিও এটি বলা হয়েছিল তা মনে করতে পারিনি ... এটিই ছিল!
meshantz

1
এটি অজগর 3 সমর্থন করে না (সবেমাত্র পিপ থেকে ইনস্টল হয়েছে এবং রানটাইম ত্রুটি পেয়েছে)
ওহাদ কোহেন

9

পাইপের পরবর্তী সংস্করণগুলিতে এটি চালনার জন্য (পরীক্ষিত pip==10.0.1) নিম্নলিখিত ব্যবহার করুন:

from pip._internal.operations.freeze import freeze
for requirement in freeze(local_only=True):
    print(requirement)

অভ্যন্তরীণpydoc pip._internalhelp(pip._internal) অবস্থা কি ?. আমি দেখতে পাচ্ছি কিন্তু আমি এটিতে পৌঁছতে পারছি না , পিপ .__ বিল্টিন_ ইত্যাদি পিপ রেফারেন্স গাইডটিও ফাঁকা।
মর্টেনবি

1
দুর্ভাগ্যক্রমে আমি জানি না। এটি হয় বলা ভাল _internalনা। দেখে মনে হচ্ছে কার্যকারিতাটি সরকারীভাবে প্রকাশিত হয়নি। সুতরাং আপনার যত্ন সহকারে এটি পরিচালনা করা উচিত!
এক্সহুমা

8

কমান্ড লাইন থেকে

python -c help('modules')

সমস্ত মডিউল দেখতে এবং নির্দিষ্ট মডিউলগুলির জন্য ব্যবহার করা যেতে পারে

python -c help('os')

নীচে লিনাক্স কাজ করবে

python -c "help('os')"

5
এটি উইন্ডোতে কাজ করে। লিনাক্সে এটি ত্রুটি ছুড়ে ফেলে:-bash: syntax error near unexpected token `('
অজয় কুমারবাবুথকর

এটি মডিউলগুলির সংস্করণ দেয় না
স্টেপান ইয়াকোভেনকো

5

হ্যাঁ! আপনার পাইপটিকে আপনার পাইথন প্যাকেজ ম্যানেজার হিসাবে ব্যবহার করা উচিত ( http://pypi.python.org/pypi/pip )

পাইপ ইনস্টল প্যাকেজ সহ, আপনি একটি করতে পারেন

pip freeze

এবং এটি সমস্ত ইনস্টল করা প্যাকেজ তালিকাভুক্ত করবে। আপনার সম্ভবত ভার্চুয়ালেনভ এবং ভার্চুয়ালেনভ্রাপার ব্যবহার করা উচিত । আপনি যখন একটি নতুন প্রকল্প শুরু করবেন, আপনি এটি করতে পারেন

mkvirtualenv my_new_project

এবং তারপরে (সেই ভার্চুয়ালেনভের ভিতরে), করুন do

pip install all_your_stuff

এই উপায়ে, আপনি workon my_new_projectএবং তারপরে pip freezeসেই ভার্চুয়ালেনভ / প্রকল্পের জন্য কোন প্যাকেজ ইনস্টল করা হয়েছে তা দেখতে পারেন।

উদাহরণ স্বরূপ:

  ~  mkvirtualenv yo_dude
New python executable in yo_dude/bin/python
Installing setuptools............done.
Installing pip...............done.
virtualenvwrapper.user_scripts creating /Users/aaylward/dev/virtualenvs/yo_dude/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/aaylward/dev/virtualenvs/yo_dude/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/aaylward/dev/virtualenvs/yo_dude/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/aaylward/dev/virtualenvs/yo_dude/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/aaylward/dev/virtualenvs/yo_dude/bin/get_env_details

(yo_dude)➜  ~  pip install django
Downloading/unpacking django
  Downloading Django-1.4.1.tar.gz (7.7Mb): 7.7Mb downloaded
  Running setup.py egg_info for package django

Installing collected packages: django
  Running setup.py install for django
    changing mode of build/scripts-2.7/django-admin.py from 644 to 755

    changing mode of /Users/aaylward/dev/virtualenvs/yo_dude/bin/django-admin.py to 755
Successfully installed django
Cleaning up...

(yo_dude)➜  ~  pip freeze
Django==1.4.1
wsgiref==0.1.2

(yo_dude)➜  ~  

বা যদি আপনার কাছে একটি অজগর প্যাকেজ থাকে একটি প্রয়োজনীয়তা.পিপ ফাইল,

mkvirtualenv my_awesome_project
pip install -r requirements.pip
pip freeze

কৌতুক করবে


ওহ হ্যাঁ আমি বেশ কিছুদিন ধরেই ভার্চুয়ালেনভ ব্যবহার করছি। আমি কেবল জানি না যে আমি কীভাবে pipএটি ব্যবহার করতে পারি তা এইভাবে ব্যবহার করতে পারি না !
jsalonen

আমাদের সম্পর্কে virtualenvবিশ্বব্যাপী সাইট প্যাকেজের সঙ্গে, তারপর আপনি ব্যবহার করতে হবে pip list --local
ইওনিস ফিলিপিসিস

@ জোহনটেক্স আপনার কখনই গ্লোবাল সাইট প্যাকেজ ব্যবহার করা উচিত নয়!
অ্যান্ডবিড্রু

গ্লোবাল সাইট প্যাকেজ ব্যবহার খুব দরকারী। যদি এটি না হয় তবে বিকল্পটি মোটেই বিদ্যমান ছিল না virtualenv। এগুলি ব্যবহার না করার কোনও কারণ সম্পর্কে আমি অবগত নই এবং আপনি virtualenvযদি পছন্দ করেন তবে কেউ আপনাকে বিচ্ছিন্ন করার ক্ষেত্রে সীমাবদ্ধতা থেকে বাধা দেয় ।
আইওনিস ফিলিপিসিস

এগুলি ব্যবহার না করার একটি দুর্দান্ত কারণ হ'ল আপনি যখন নিজের অ্যাপ্লিকেশন বা প্রোগ্রামটি বিতরণ বা স্থাপন করবেন তখন অন্য ব্যক্তি / সার্ভারগুলির কাছে আপনার বিশ্বব্যাপী সাইট প্যাকেজ থাকবে না। আপনি যদি একমাত্র ব্যক্তি অ্যাপটি ব্যবহার করেন তবে আপনি যা চান তা করুন।
অ্যান্ডব্র্রু

5

আমার গ্রহণ:

#!/usr/bin/env python3

import pkg_resources

dists = [str(d).replace(" ","==") for d in pkg_resources.working_set]
for i in dists:
    print(i)

2

PYTHONPATHআপনার অজগর libs dir এর পরম পথের পরিবর্তে এটি ব্যবহার করার একটি উপায় এখানে রয়েছে :

for d in `echo "${PYTHONPATH}" | tr ':' '\n'`; do ls "${d}"; done

[ 10:43 Jonathan@MacBookPro-2 ~/xCode/Projects/Python for iOS/trunk/Python for iOS/Python for iOS ]$ for d in `echo "$PYTHONPATH" | tr ':' '\n'`; do ls "${d}"; done
libpython2.7.dylib pkgconfig          python2.7
BaseHTTPServer.py      _pyio.pyc              cgitb.pyo              doctest.pyo            htmlentitydefs.pyc     mimetools.pyc          plat-mac               runpy.py               stringold.pyc          traceback.pyo
BaseHTTPServer.pyc     _pyio.pyo              chunk.py               dumbdbm.py             htmlentitydefs.pyo     mimetools.pyo          platform.py            runpy.pyc              stringold.pyo          tty.py
BaseHTTPServer.pyo     _strptime.py           chunk.pyc              dumbdbm.pyc            htmllib.py             mimetypes.py           platform.pyc           runpy.pyo              stringprep.py          tty.pyc
Bastion.py             _strptime.pyc          chunk.pyo              dumbdbm.pyo            htmllib.pyc            mimetypes.pyc          platform.pyo           sched.py               stringprep.pyc         tty.pyo
Bastion.pyc            _strptime.pyo          cmd.py
....


1

এটি অজগর থেকে চালানোর প্রয়োজন হলে আপনি কেবল সাবপ্রসেসের জন্য আবেদন করতে পারেন

from subprocess import PIPE, Popen

pip_process = Popen(["pip freeze"], stdout=PIPE,
                   stderr=PIPE, shell=True)
stdout, stderr = pip_process.communicate()
print(stdout.decode("utf-8"))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.