Easy_install বা পাইপ দিয়ে ইনস্টল করা সমস্ত পাইথন পাইপিআই প্যাকেজগুলি খুঁজে পাওয়ার কি কোনও উপায় আছে? আমি বোঝাতে চাইছি, বিতরণ সরঞ্জামগুলির সাথে ইনস্টল করা / ইনস্টল থাকা সমস্ত কিছু বাদ দিয়ে (এই ক্ষেত্রে ডেবিয়ানকে উপভোগ করুন)।
Easy_install বা পাইপ দিয়ে ইনস্টল করা সমস্ত পাইথন পাইপিআই প্যাকেজগুলি খুঁজে পাওয়ার কি কোনও উপায় আছে? আমি বোঝাতে চাইছি, বিতরণ সরঞ্জামগুলির সাথে ইনস্টল করা / ইনস্টল থাকা সমস্ত কিছু বাদ দিয়ে (এই ক্ষেত্রে ডেবিয়ানকে উপভোগ করুন)।
উত্তর:
pip freeze
ইনস্টল করা প্যাকেজগুলির তালিকা এবং তাদের সংস্করণগুলি আউটপুট দেয়। এটি আপনাকে সেই ফাইলগুলিতে সেই প্যাকেজগুলি লেখার অনুমতি দেয় যা পরবর্তীতে একটি নতুন পরিবেশ স্থাপনের জন্য ব্যবহৃত হতে পারে।
https://pip.pypa.io/en/stable/reference/pip_freeze/#pip-freeze
pip freeze
এবং pip list
সবকিছু তালিকাভুক্ত। তারা যে প্যাকেজগুলি ইনস্টল করেনি তা বাদ দেয় না pip
।
pip freeze
স্ক্রিপ্টগুলিতে নির্ভরযোগ্যও বোধ করি, যেখানে pip list
পাইপগুলি ব্যবহার করার সময় অপ্রত্যাশিত ত্রুটি ঘটবে।
pip list -l
বা pip list --local
সবচেয়ে ভালো উত্তর হয়, দেখতে stackoverflow.com/a/43012269/491884 @MJB দ্বারা
পিপ সংস্করণ 1.3 হিসাবে আপনি এখন ব্যবহার করতে পারেন pip list
পুরানো প্যাকেজগুলি দেখানোর ক্ষমতা সহ এটিতে কিছু দরকারী বিকল্প রয়েছে। এখানে ডকুমেন্টেশন রয়েছে: https://pip.pypa.io/en/latest/references/pip_list/
pip freeze
pip list --user
কেবলমাত্র ব্যবহারকারী দ্বারা ইনস্টল করা প্যাকেজগুলি দেখায় এবং সিস্টেম-ব্যাপী প্যাকেজগুলি বাদ দেয়।
কেউ যদি ভাবছেন তবে আপনি 'পাইপ শো' কমান্ডটি ব্যবহার করতে পারেন।
pip show [options] <package>
এটি প্রদত্ত প্যাকেজটির ইনস্টল ডিরেক্টরি তালিকাভুক্ত করবে।
যদি ডিবিয়ান pip install
ডিফল্ট লক্ষ্য সম্পর্কিত সাম্প্রতিক উবুন্টু সংস্করণগুলির মতো আচরণ করে তবে এটি মৃত সহজ: এটি ( ডিফল্ট লক্ষ্য) এর /usr/local/lib/
পরিবর্তে ইনস্টল করে । চেক/usr/lib
apt
/ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747
আমি একজন আর্চলিনাক্স ব্যবহারকারী এবং পাইপের পরীক্ষা-নিরীক্ষা করার সময় আমি এই একই সমস্যার মুখোমুখি হয়েছি। আমি এখানে আর্কটিতে কীভাবে সমাধান করেছি তা এখানে।
find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs pacman -Qo | grep 'No package'
এখানে কীটি হ'ল /usr/lib/python2.7/site-packages
, ওয়াইএমএমভিতে ডিরেক্টরি পাইপ ইনস্টল হয়। pacman -Qo
কিভাবে আর্চের প্যাক কেজ ম্যান অ্যাগ্রেল ফাইলের মালিকানা পরীক্ষা করে দেখুন। No package
কোনও প্যাকেজ ফাইলের মালিক না হলে এটি প্রদানের অংশ error: No package owns $FILENAME
। কৌতুকপূর্ণ কাজ: আমি ডিরেক্টরি জিজ্ঞাসা করছি __init__.py
কারণ pacman -Qo
এটি ডিরেক্টরিতে আসে যখন কিছুটা অজ্ঞ থাকে :(
অন্যান্য ডিস্ট্রোদের জন্য এটি করতে, আপনাকে কোথায় pip
স্টাফ ইনস্টল করে (কেবল sudo pip install
কিছু), কোনও ফাইলের মালিকানা কীভাবে জিজ্ঞাসা করতে হবে তা জানতে হবে (দেবিয়ান / উবুন্টু পদ্ধতিটি কীভাবে dpkg -S
) এবং "কোনও প্যাকেজ সেই পাথের মালিক নয়" কীভাবে ফিরে আসে (ডেবিয়ান / উবুন্টু হ'ল no path found matching pattern
)। দেবিয়ান / উবুন্টু ব্যবহারকারীগণ, সাবধান: dpkg -S
আপনি যদি এটি একটি প্রতীকী লিঙ্ক দেন তবে ব্যর্থ হবে। প্রথমে এটি ব্যবহার করে সমাধান করুন realpath
। এটার মত:
find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | xargs dpkg -S 2>&1 | grep 'no path found'
ফেডোরা ব্যবহারকারীরা চেষ্টা করতে পারেন (ধন্যবাদ @ এডিজিক):
find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'
dpkg
স্টাডারে ত্রুটি লিখি যাতে আমাকে পুনর্নির্দেশ যোগ করতে হয় 2>&1
। এবং আন্তর্জাতিক আউটপুট জন্য LANG=
সামনে যোগ করুন xargs dpkg -s
। এবং sed
পথের প্যাকেজের নাম রাখার জন্য এটি একটি দুর্দান্ত সরঞ্জামও;)। তাই আমি শেষ করছি:find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | LANG= xargs dpkg -S 2>&1 | grep 'no path found' | sed "s/.*\/\([^\/]*\)\/__init__\.py.*/\1/"
শুরু করা:
$ pip list
সমস্ত প্যাকেজ তালিকাবদ্ধ করতে। আপনি যে প্যাকেজটি চান তা পেয়ে গেলে, ব্যবহার করুন:
$ pip show <package-name>
এটি আপনাকে এই প্যাকেজটির ফোল্ডার সহ বিশদ বিবরণ প্রদর্শন করবে। আপনি যদি প্যাকেজের নাম ইতিমধ্যে জানেন তবে আপনি প্রথম অংশটি এড়িয়ে যেতে পারেন
ক্লিক করুন এখানে পিপ শো আরও তথ্যের জন্য এবং এখানে পিপ তালিকায় আরও তথ্যের জন্য।
উদাহরণ:
$ pip show jupyter
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: jupyter@googlegroups.org
License: BSD
Location: /usr/local/lib/python2.7/site-packages
Requires: ipywidgets, nbconvert, notebook, jupyter-console, qtconsole, ipykernel
pip.get_installed_distributions()
ইনস্টল করা প্যাকেজগুলির একটি তালিকা দেবে
import pip
from os.path import join
for package in pip.get_installed_distributions():
print(package.location) # you can exclude packages that's in /usr/XXX
print(join(package.location, package._get_metadata("top_level.txt"))) # root directory of this package
নীচে কিছুটা ধীর গতিযুক্ত তবে এটি pip
সচেতন এমন প্যাকেজগুলির একটি সুন্দর বিন্যাসিত তালিকা দেয় । এর অর্থ হল, তাদের সমস্তগুলি "বাই" পিপ ইনস্টল করা হয়নি, তবে তাদের সকলকেই পিপ দিয়ে আপগ্রেড করতে সক্ষম হওয়া উচিত।
$ pip search . | egrep -B1 'INSTALLED|LATEST'
এটি ধীর হওয়ার কারণ হ'ল এটি পুরো পাইপি রেপোর সামগ্রীগুলি তালিকাভুক্ত করে। আমি অনুরূপ কার্যকারিতা সরবরাহ করার পরামর্শ দিয়ে একটি টিকিট দায়ের করেছি pip list
তবে আরও দক্ষতার সাথে।
নমুনা আউটপুট: (সকলের জন্য '।' এর পরিবর্তে সাবসেটটিতে অনুসন্ধান সীমাবদ্ধ করে))
$ pip search selenium | egrep -B1 'INSTALLED|LATEST'
selenium - Python bindings for Selenium
INSTALLED: 2.24.0
LATEST: 2.25.0
--
robotframework-selenium2library - Web testing library for Robot Framework
INSTALLED: 1.0.1 (latest)
$
@ পল উলককের উত্তরে যোগ করা,
pip freeze > requirements.txt
বর্তমান অবস্থানে সক্রিয় পরিবেশে ইনস্টল করা সংস্করণ নম্বরগুলির সাথে সমস্ত ইনস্টল করা প্যাকেজগুলির সাথে প্রয়োজনীয় ফাইল তৈরি করবে । চলমান
pip install -r requirements.txt
প্রয়োজনীয় ফাইলগুলিতে নির্দিষ্ট প্যাকেজগুলি ইনস্টল করবে।
পাইপের নতুন সংস্করণগুলিতে ওপি pip list -l
বা pip freeze -l
( --list
) এর মাধ্যমে যা চায় তা করার ক্ষমতা রাখে ।
ডেবিয়ানে (কমপক্ষে) ম্যান পৃষ্ঠাটি এটি পরিষ্কার করে না, এবং বৈশিষ্ট্যটি অবশ্যই উপস্থিত থাকতে হবে - এই ধারণার অধীনে আমি কেবল এটি আবিষ্কার করেছি pip list --help
।
সাম্প্রতিক মন্তব্যগুলি রয়েছে যা প্রস্তাব করে যে এই বৈশিষ্ট্যটি ডকুমেন্টেশন বা বিদ্যমান উত্তরের (যদিও কিছু দ্বারা ইঙ্গিত করা হয়েছে) পরিষ্কার নয়, তাই আমি ভেবেছিলাম আমার পোস্ট করা উচিত। আমি মন্তব্য হিসাবে এটি করতে পছন্দ করতাম, তবে আমার সুনামের পয়েন্ট নেই।
pip freeze --local
8 বছর ধরে ছিল pip list --local
খুব সহজলভ্য ... তবে লক্ষ্য করুন যে ওপি প্রশ্নটি ভার্চুয়াল পরিবেশ (যা --local
সমর্থন করে) সম্পর্কিত নয়, প্যাকেজগুলি থেকে ডিস্ট্রো প্যাকেজগুলি বোঝার বিষয়ে sudo pip install
।
মনে রাখবেন যে আপনার কম্পিউটারে পাইথনের একাধিক সংস্করণ ইনস্টল থাকলে আপনার প্রতিটিটির সাথে পাইপের কয়েকটি সংস্করণ থাকতে পারে।
আপনার অ্যাসোসিয়েশনগুলির উপর নির্ভর করে আপনি কী পাইপ কমান্ড ব্যবহার করছেন তা সম্পর্কে আপনাকে খুব সতর্ক হতে হবে:
pip3 list
আমার জন্য কাজ করেছেন, যেখানে আমি পাইথন 3.4 চালাচ্ছি। কেবল ব্যবহার pip list
করে ত্রুটি ফিরে এসেছে The program 'pip' is currently not installed. You can install it by typing: sudo apt-get install python-pip
।
@ এলম্যানন যেমন উল্লেখ করেছেন, এটি আর কাজ করে না এবং এটি আপনার কোডে প্যাকেজ সম্পর্কিত তথ্য পাওয়ার পক্ষে সমর্থিত উপায় নয়। নিম্নলিখিত একটি ব্যতিক্রম উত্থাপন:
import pip
installed_packages = dict([(package.project_name, package.version)
for package in pip.get_installed_distributions()])
এটি সম্পাদন করতে, আপনি আমদানি করতে পারেন pkg_resources
। এখানে একটি উদাহরণ:
import pkg_resources
installed_packages = dict([(package.project_name, package.version)
for package in pkg_resources.working_set])
আমি আছি v3.6.5
ফেডোরা বা অন্যান্য আরপিএম ডিস্ট্রোজ (@ বারাপন্টো টিপসের উপর ভিত্তি করে) এর জন্য এখানে ওয়ান-লাইনার রয়েছে:
find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'
ক্লিনার আউটপুট পেতে এটি পূর্ববর্তী কমান্ডটিতে যুক্ত করুন:
| sed -r 's:.*/(\w+)/__.*:\1:'
এতে সমস্ত ফাইল / ফোল্ডার নাম পান site-packages/
(এবং dist-packages/
এটি উপস্থিত থাকলে) এবং প্যাকেজটির মাধ্যমে ইনস্টল করা ফাইলগুলি সরাতে আপনার প্যাকেজ ম্যানেজারটি ব্যবহার করুন।
পাইপ ফ্রিজ সমস্ত ইনস্টল করা প্যাকেজগুলি পিপ / ইজিল_ইনস্টল দ্বারা না করে তালিকাবদ্ধ করে। CentOs / redhat এ rpm এর মাধ্যমে ইনস্টল করা একটি প্যাকেজ পাওয়া যায়।
আপনি যদি অ্যানাকোন্ডা পাইথন বিতরণ ব্যবহার করেন তবে conda list
কোন পদ্ধতিতে কোনটি ইনস্টল করা হয়েছে তা দেখতে আপনি কমান্ডটি ব্যবহার করতে পারেন :
user@pc:~ $ conda list
# packages in environment at /anaconda3:
#
# Name Version Build Channel
_ipyw_jlab_nb_ext_conf 0.1.0 py36h2fc01ae_0
alabaster 0.7.10 py36h174008c_0
amqp 2.2.2 <pip>
anaconda 5.1.0 py36_2
anaconda-client 1.6.9 py36_0
ইনস্টল করা এন্ট্রিগুলি হ'ল pip
(সম্ভবত pip
নিজে থেকেই)
user@pc:~ $ conda list | grep \<pip
amqp 2.2.2 <pip>
astroid 1.6.2 <pip>
billiard 3.5.0.3 <pip>
blinker 1.4 <pip>
ez-setup 0.9 <pip>
feedgenerator 1.9 <pip>
অবশ্যই আপনি সম্ভবত প্রথম কলামটি নির্বাচন করতে চান, যা দিয়ে আপনি করতে পারেন ( pip
প্রয়োজনে বাদে ):
user@pc:~ $ conda list | awk '$3 ~ /pip/ {if ($1 != "pip") print $1}'
amqp
astroid
billiard
blinker
ez-setup
feedgenerator
অবশেষে আপনি এই মানগুলি ধরে নিতে পারেন এবং নীচের সাহায্যে সেগুলি সমস্ত আনইনস্টল করতে পারেন:
user@pc:~ $ conda list | awk '$3 ~ /pip/ {if ($1 != "pip") print $1}' | xargs pip uninstall -y
মুছে ফেলার জন্য নিশ্চিতকরণ দিতে এড়ানোর -y
জন্য পতাকাটির ব্যবহারটি নোট করুন pip uninstall
।
পাইপ তালিকা [বিকল্পসমূহ] আপনি এখানে সম্পূর্ণ রেফারেন্স দেখতে পারেন
কমপক্ষে উবুন্টুর জন্য (সম্ভবত অন্যরাও) এটি কাজ করে ( এই থ্রেডের আগের পোস্টে অনুপ্রাণিত ):
printf "Installed with pip:";
pip list 2>/dev/null | gawk '{print $1;}' | while read; do pip show "${REPLY}" 2>/dev/null | grep 'Location: /usr/local/lib/python2.7/dist-packages' >/dev/null; if (( $? == 0 )); then printf " ${REPLY}"; fi; done; echo