পাইপের সাহায্যে প্যাকেজের কোন সংস্করণ ইনস্টল করা আছে তা সন্ধান করুন


708

পাইপ ব্যবহার করে, বর্তমানে প্যাকেজের কোন সংস্করণ ইনস্টল করা আছে তা নির্ধারণ করা সম্ভব?

আমি জানি pip install XYZ --upgradeতবে আমি ভাবছি এরকম কিছু আছে কিনা pip info XYZ। যদি না হয় তবে আমি বর্তমানে কোন সংস্করণটি ব্যবহার করছি তা বলার সর্বোত্তম উপায় কী হবে।


4
পাইপেshow কমান্ডের প্রস্তাব রয়েছে : github.com/pypa/pip/issues/33
হুগো টাভারেস

উত্তর:


1012

পাইপ 1.3 হিসাবে, একটি pip showকমান্ড রয়েছে।

$ pip show Jinja2
---
Name: Jinja2
Version: 2.7.3
Location: /path/to/virtualenv/lib/python2.7/site-packages
Requires: markupsafe

পুরানো সংস্করণগুলিতে pip freezeএবং grepকাজটি সুন্দরভাবে করা উচিত।

$ pip freeze | grep Jinja2
Jinja2==2.7.3

8
@ টেকটোনিক: এটি বর্তমানের মডিউলগুলি একটি প্রয়োজনীয়তা.টিএসটিএসে জমা করার জন্য।
হুগো

@ হুগো: আমি saveনাম ব্যবহার করব ।
অ্যানাটোলি টেকটোনিক

5
'হিমায়িত' নামকরণ historicalতিহাসিক - এটি কমপক্ষে ২০০৮ সালের । সেই সময়, অনেক লোক "জমে থাকা" রুবি রত্ন সম্পর্কে ইতিমধ্যে পরিচিত ছিল, তাই পিপ তত্কালীনভাবে ব্যবহৃত-নামটি ধার করেছিল orrow
আদমকেজি

2
এটি সুস্পষ্ট বা ডকুমেন্টেড ছিল না তবে আপনি টাইপ করতে পারেন pip show pippip --version যা আশা করেছিলেন তার চেয়ে আপনি পাইপের সংস্করণ তথ্য পেতে করতে পারেন ।
মার্ক ম্যাক্সমিস্টার

pip freezeএটির সুবিধা রয়েছে যে এটি সম্পাদনযোগ্য ভিসিএস চেকআউট সংস্করণগুলি সঠিকভাবে দেখায়, যখন pip showনা।
spookylukey

63

আমি কেবল বর্ধিত হুগো টাভেরেসের সাথে পাইপে একটি অনুরোধ পাঠিয়েছি:

(উদাহরণ হিসাবে স্প্লাউড)

$ pip show specloud

Package: specloud
Version: 0.4.4
Requires:
nose
figleaf
pinocchio

2
দেখে মনে হচ্ছে এটি ইতিমধ্যে মার্জ হয়েছে is
অ্যানাটোলি টেকটোনিক

43

পিপ 1.3 এ এখন একটি তালিকা কমান্ড রয়েছে:

$ pip list
argparse (1.2.1)
pip (1.5.1)
setuptools (2.1)
wsgiref (0.1.2)

বলুন প্যাকেজের নাম এক্স। সংস্করণটি সন্ধান করতে - পাইপ তালিকা ব্যবহার করে এক্স এবং আমদানি করা এক্স এবং তারপরে এক্স .__ সংস্করণ__ এর মধ্যে পার্থক্য কী? প্যাকেজ সংস্করণ দুটি?
পরিবর্তনশীল

উভয়ই বৈধ, তবে pip listজেনেরিক, এবং __version__তা নয়। আমিও দেখেছি version()এবং get_version()আমদানিকৃতটির জন্যও ।
রিকিএ

35

এবং অতিরিক্ত আর্গুমেন্ট হিসাবে তারিখ অনুসারে, আপনি যে প্যাকেজগুলি ব্যবহার করছেন তার বর্তমান এবং সর্বশেষ সংস্করণ পাবেন:

$ pip list --outdated
distribute (Current: 0.6.34 Latest: 0.7.3)
django-bootstrap3 (Current: 1.1.0 Latest: 4.3.0)
Django (Current: 1.5.4 Latest: 1.6.4)
Jinja2 (Current: 2.6 Latest: 2.8)

সুতরাং অ্যাডামকেজির উত্তরটির সাথে একত্রিত:

$ pip list --outdated | grep Jinja2
Jinja2 (Current: 2.6 Latest: 2.8)

পাইপ-সরঞ্জামগুলিও পরীক্ষা করুন : https://github.com/nvie/pip-tools


1
একটি আকর্ষণীয় বিকল্প। আমি বরং এটির সমস্তটির তালিকা তৈরি করতে চাই এবং তাদের কোনওটি পুরানো কিনা তা আমাকে জানান।
আর্টঅফ ওয়ারফেয়ার

17

আপনি ইনস্টল করতে পারেন yolkএবং তারপরে রান করতে পারেন yolk -lযা কিছু দুর্দান্ত আউটপুট দেয়। আমার ছোট্ট ভার্চুয়ালেনভের জন্য আমি যা পেয়েছি তা এখানে:

(venv)CWD> /space/vhosts/pyramid.xcode.com/venv/build/unittest 
project@pyramid 43> yolk -l
Chameleon       - 2.8.2        - active 
Jinja2          - 2.6          - active 
Mako            - 0.7.0        - active 
MarkupSafe      - 0.15         - active 
PasteDeploy     - 1.5.0        - active 
Pygments        - 1.5          - active 
Python          - 2.7.3        - active development (/usr/lib/python2.7/lib-dynload)
SQLAlchemy      - 0.7.6        - active 
WebOb           - 1.2b3        - active 
account         - 0.0          - active development (/space/vhosts/pyramid.xcode.com/project/account)
distribute      - 0.6.19       - active 
egenix-mx-base  - 3.2.3        - active 
ipython         - 0.12         - active 
logilab-astng   - 0.23.1       - active 
logilab-common  - 0.57.1       - active 
nose            - 1.1.2        - active 
pbkdf2          - 1.3          - active 
pip             - 1.0.2        - active 
pyScss          - 1.1.3        - active 
pycrypto        - 2.5          - active 
pylint          - 0.25.1       - active 
pyramid-debugtoolbar - 1.0.1        - active 
pyramid-tm      - 0.4          - active 
pyramid         - 1.3          - active 
repoze.lru      - 0.5          - active 
simplejson      - 2.5.0        - active 
transaction     - 1.2.0        - active 
translationstring - 1.1          - active 
venusian        - 1.0a3        - active 
waitress        - 0.8.1        - active 
wsgiref         - 0.1.2        - active development (/usr/lib/python2.7)
yolk            - 0.4.3        - active 
zope.deprecation - 3.5.1        - active 
zope.interface  - 3.8.0        - active 
zope.sqlalchemy - 0.7          - active 

9

আপনি গ্রেপ কমান্ডটি ব্যবহার করতে পারেন তা জানতে।

pip show <package_name>|grep Version

উদাহরণ:

pip show urllib3|grep Version

শুধুমাত্র সংস্করণগুলি প্রদর্শন করবে।

মেটাডেটা-সংস্করণ: 2.0
সংস্করণ: 1.12


8

সবচেয়ে সহজ উপায় হ'ল:

import jinja2
print jinja2.__version__

7
এটি কেবলমাত্র __version__তাদের উত্স কোডে সংজ্ঞায়িত প্যাকেজগুলির জন্য কাজ করে । অনেক প্যাকেজ না।
spookylukey

প্যাকেজিংয়ের সময় এই সংস্করণটি অন্তর্ভুক্ত করা কি ভাল অনুশীলন বা কেবল সেটআপ.পি ফাইল সংস্করণ প্যারামিটারে সংস্করণ রাখা ভাল অনুশীলন?
পরিবর্তনশীল

প্রত্যাশিত ইনপুট importএবং আউটপুট এর মধ্যে নামকরণের অসঙ্গতিগুলি (কমপক্ষে 3 প্রকার রয়েছে) প্যাকেজ করার পক্ষেও এই পদ্ধতিটি শক্ত নয় pip freeze
মিরেকএফডি

6

এমন একটি সরঞ্জামও বলা হয়েছে pip-checkযা আপনাকে সমস্ত ইনস্টল করা প্যাকেজগুলির আপডেট আপডেট এবং তার আপডেটের স্থিতি দেয়:

এখানে চিত্র বর্ণনা লিখুন

এটি নিজে ব্যবহার করেননি; কেবল তাড়াতাড়ি এটি এবং এই একই প্রশ্নে হোঁচট খেয়েছে এবং যেহেতু এটি উল্লেখ করা হয়নি ...


উইন্ডোতে এটি কীভাবে চালানো যায়
ভেলা

1
@ ভেলা আমি আশা করি এটি উইন্ডোজে ঠিক একইভাবে কাজ করবে। অবশ্যই আপনাকে প্রথমে এটি ইনস্টল করতে হবে যেমন আপনি কোনও সিস্টেমে করেন।
ওলা টুভসন

5

উইন্ডোজগুলিতে, আপনি কমান্ড জারি করতে পারেন যেমন:

pip show setuptools | findstr "Version"

আউটপুট:

Version: 34.1.1

2

পাইথন ফাংশনটি মেশিন-পঠনযোগ্য ফর্ম্যাটে কেবল প্যাকেজ সংস্করণটি ফিরিয়ে দিচ্ছে:

from importlib.metadata import version 
version('numpy')

অজগর 3.8 এর আগে:

pip install importlib-metadata 
from importlib_metadata import version
version('numpy')

বাশের সমতুল্য (এখানে অজগর থেকেও আহবান করা হয়েছে) অনেক জটিল হবে (তবে আরও দৃ rob় - নীচে সাবধানতা দেখুন):

import subprocess
def get_installed_ver(pkg_name):
    bash_str="pip freeze | grep -w %s= | awk -F '==' {'print $2'} | tr -d '\n'" %(pkg_name)
    return(subprocess.check_output(bash_str, shell=True).decode())

নমুনা ব্যবহার:

# pkg_name="xgboost"
# pkg_name="Flask"
# pkg_name="Flask-Caching"
pkg_name="scikit-learn"

print(get_installed_ver(pkg_name))
>>> 0.22

লক্ষ্য করুন উভয় ক্ষেত্রেই pkg_nameপ্যারামিটার বিন্যাসে প্যাকেজের নাম থাকা উচিত যেমন দ্বারা ফিরে pip freezeএবং সময় ব্যবহৃত না import, যেমন scikit-learnনা sklearnবা Flask-Cachingনা flask_caching

নোট করুন যে pip freezeব্যাশ সংস্করণে আবেদন করার সময় অকার্যকর মনে হতে পারে, কেবলমাত্র এই পদ্ধতিটি প্যাকেজ নামকরণের অদ্ভুততা এবং অসঙ্গতিগুলিতে যথেষ্ট শক্তিশালী বলে প্রমাণিত হয় (যেমন আন্ডারস্কোর বনাম ড্যাশ, ছোট বনাম বড় ক্যাপ এবং সংক্ষেপণ যেমন sklearnবনামscikit-learn )।

সতর্কতা: জটিল পরিবেশে উভয় রূপই আশ্চর্য সংস্করণ নম্বরগুলি ফিরিয়ে দিতে পারে যা আপনি আসলে যা পেতে পারেন তার সাথে সামঞ্জস্য নয় import

যখন ব্যবহারকারী site-packages সাবফোল্ডারটিতে প্যাকেজের অন্যান্য সংস্করণ লুকানো থাকে তখন এ জাতীয় একটি সমস্যা দেখা দেয় । version()এখানে ব্যবহারের বিপদগুলির উদাহরণ হিসাবে আমি এমন একটি পরিস্থিতির মুখোমুখি হয়েছি:

$ pip freeze | grep lightgbm
lightgbm==2.3.1

and

$ python -c "import lightgbm; print(lightgbm.__version__)"
2.3.1

vs.

$ python -c "from importlib_metadata import version; print(version(\"lightgbm\"))"
2.2.3

until you delete the subfolder with the old version (here 2.2.3) from the user folder (only one would normally be preserved by `pip` - the one installed as last with the `--user` switch):

$ ls /home/jovyan/.local/lib/python3.7/site-packages/lightgbm*
/home/jovyan/.local/lib/python3.7/site-packages/lightgbm-2.2.3.dist-info
/home/jovyan/.local/lib/python3.7/site-packages/lightgbm-2.3.1.dist-info

অন্য পরিবেশে একই পরিবেশে কিছু কনডা ইনস্টলড প্যাকেজ রয়েছে। যদি তারা আপনার পাইপ-ইনস্টল করা প্যাকেজগুলির সাথে নির্ভরতা ভাগ করে এবং এই নির্ভরতার সংস্করণগুলি পৃথক হয়, আপনি আপনার পাইপ-ইনস্টল করা নির্ভরতাগুলির ডাউনগ্রেড পেতে পারেন।

উদাহরণস্বরূপ, numpyপিপিআই-তে 04-01-2020-এ উপলব্ধ সর্বশেষতম সংস্করণটি ছিল 1.18.0, একই সময়ে অ্যানাকোন্ডার conda-forgeচ্যানেলের সর্বশেষতম numpyহিসাবে কেবল 1.17.3 সংস্করণ ছিল । সুতরাং যখন আপনি basemapকনডা (দ্বিতীয় হিসাবে) দিয়ে একটি প্যাকেজ ইনস্টল করেছেন, আপনার পূর্বে ইনস্টল numpyকরা পাইপটি কনডা দ্বারা 1.17.3 এ ডাউনগ্রেড হয়ে যাবে এবং সংস্করণ 1.18.0 importফাংশনের জন্য অনুপলব্ধ হবে । এই ক্ষেত্রে version()সঠিক হবে, এবং pip freeze/ conda listভুল:

$ python -c "from importlib_metadata import version; print(version(\"numpy\"))"
1.17.3

$ python -c "import numpy; print(numpy.__version__)"
1.17.3

$ pip freeze | grep numpy
numpy==1.18.0

$ conda list | grep numpy
numpy                     1.18.0                   pypi_0    pypi

1
কেন ব্যবহার importlib.metadata.version('NameOfProject')করবেন না ? docs.python.org/3/library/…
sinoroc

1
@ সাইনরোকের দুর্দান্ত সন্ধান! আমি মনে করি আপনার উত্তর হিসাবে এটি পোস্ট করা উচিত, এবং আমি আমার বরং ওভাররেঞ্জিনার্ড একটি মুছে ফেলব :) নমুনা from importlib_metadata import version; version('Flask-Caching')
পোকা

1
আমি আপনাকে এর জন্য যেতে দেব
sinoroc

আপনার সর্বশেষতম সম্পাদনাগুলি আমাকে অবাক করে। আপনি চেষ্টা করতে পারেন python -c "import pkg_resources; print(pkg_resources.get_distribution('lightgbm').version)"?
সিনোরোক

এটি আপনাকে সঠিক উত্তর দেয় - ইনস্টল হওয়া সর্বশেষতম সংস্করণ (২.৩.১), যখন version()এখনও প্রারম্ভিক (পুরানো) একটি (২.২.৩) প্রদান করে। আপনি উভয় সংস্করণটি --userস্যুইচ দিয়ে ইনস্টল করে এই ফলের প্রতিলিপি করতে পারেন, তবে lightgbm-2.2.3.dist-infoফোল্ডারটি ম্যানুয়ালি সংরক্ষণ করে , উভয়কে একসাথে রাখার জন্য, উপরে তালিকাবদ্ধ (পিপটি সাধারণত এটি মুছে ফেলবে - যতক্ষণ না এটি হয়)।
mirekphd

1

পাইপ শো অজগর 3.7 এ কাজ করে:

pip show selenium
Name: selenium
Version: 4.0.0a3
Summary: Python bindings for Selenium
Home-page: https://github.com/SeleniumHQ/selenium/
Author: UNKNOWN
Author-email: UNKNOWN
License: Apache 2.0
Location: c:\python3.7\lib\site-packages\selenium-4.0.0a3-py3.7.egg
Requires: urllib3
Required-by:

এটি স্ট্যান্ডার্ড উত্তর নয়।
বাজিয়াদকে :0

1

পাইথন কোড ব্যবহার করে এটি করতে:

ব্যবহার importlib.metadata.version

পাইথন ≥3.8

import importlib.metadata
importlib.metadata.version('beautifulsoup4')
'4.9.1'

পাইথন ≤3.7

(ব্যবহার করে importlib_metadata.version)

!pip install importlib-metadata

import importlib_metadata
importlib_metadata.version('beautifulsoup4')
'4.9.1'

ব্যবহার pkg_resources.Distribution

import pkg_resources
pkg_resources.get_distribution('beautifulsoup4').version
'4.9.1'
pkg_resources.get_distribution('beautifulsoup4').parsed_version
<Version('4.9.1')>

সিনোরোক এবং মিরেকএফডি দ্বারা মন্তব্যে জমা দেওয়া


ঠিক আছে, দুটি উত্তরের একটি ইউনিয়ন সম্ভবত সম্প্রদায়ের পক্ষে সেরা। যেহেতু আপনারা আরও সংক্ষিপ্ত এবং একবারে মারতেও বাঁচেন নি, আপনি সম্ভবত উত্তরাধিকারী পাইথন সংস্করণ সম্পর্কিত একটি pip installএবং আন্ডারস্কোরের প্রয়োজনীয়তার সাথে আপনার তথ্যটি বাড়িয়ে তুলতে পারেন - আপনি এটি আমার থেকে ভারব্যাটিম অনুলিপি করতে পারেন বা ধারাবাহিকতার জন্য পরিবর্তন numpyকরতে পারেন beautifulsoup4
mirekphd

0

উইন্ডোজ জন্য আপনি করতে পারেন

  1. সিএমডি খুলুন এবং পাইথন টাইপ করুন, এন্টার টিপুন।

  2. ইম্পোর্ট টাইপ করুন এবং এন্টার টিপুন।

  3. ._version__ টাইপ করুন এবং এন্টার টিপুন।

আপনি এখানে স্ক্রিন শটে দেখতে পারেন যে সিরিয়াল মডিউলটির সংস্করণ পরীক্ষা করার জন্য আমি এই পদ্ধতিটি ব্যবহার করছি।

ভাবমূর্তি



0

প্রশ্নে কোন ওএস ব্যবহারকারী (উইন্ডোজ / লিনাক্স / ম্যাক) ব্যবহার করছেন তা উল্লেখ করা হয়নি

উত্তর দুটি যেমন ম্যাক এবং লিনাক্সে নির্বিঘ্নে কাজ করবে।

ব্যবহারকারী উইন্ডোতে পাইথন প্যাকেজের সংস্করণ সন্ধান করার ক্ষেত্রে নীচের কমান্ডটি ব্যবহার করা যেতে পারে।

পাওয়ারশেলের নীচে কমান্ডটি ব্যবহার করুন:

pip list | findstr <PackageName>

উদাহরণ: - pip list | findstr requests

আউটপুট: requests 2.18.4

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.