উত্তর:
পাইথন মডিউল ইনস্টল করা আছে কি না তা কীভাবে জানবেন: সিস্টেমে আপনি খুব সহজ পরীক্ষা করতে পারেন,
$ python -c "import math"
$ echo $?
0 # math module exists in system
$ python -c "import numpy"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named numpy
$ echo $?
1 # numpy module does not exist in system
সংগ্রহস্থল থেকে স্বতন্ত্র প্যাকেজগুলি ডাউনলোড করে আপনি নির্দিষ্ট মডিউল ইনস্টল করতে পারেন, উদাহরণস্বরূপ আপনি হিসাবে ইনস্টলscipy
করতে পারেন ,
sudo apt-get install python-scipy ## for Python2
sudo apt-get install python3-scipy ## for Python3
পর্যায়ক্রমে আপনি python-pip
জ্যাক টাইটান প্রস্তাবিত নীচের মন্তব্যে একটি পাইথন মডিউলও ইনস্টল numpy
করতে পারেন , ইনস্টল করতে আপনি ব্যবহার করতে পারেন
pip install numpy
সতর্কতা: কেবলমাত্র সরকারী উবুন্টু সংগ্রহস্থল ব্যবহার করে পাইথন-মডিউলগুলি ইনস্টল করার পরামর্শ দেওয়া হয় এবং pip
পদ্ধতিটি সুপারভাইজার হিসাবে ব্যবহার না করা (যেমন, যেমন root
ব্যবহার করা হয় sudo
)। কিছু ক্ষেত্রে এটি সিস্টেম অজগর ভেঙে আপনার সিস্টেমকে অকেজো হয়ে যেতে পারে।
pip
স্থানীয় ভার্চুয়াল পরিবেশে প্যাকেজগুলি কীভাবে ইনস্টল করবেন ।
vpython
আপনাকে এটিকে ইনস্টল করতে হবেsudo apt-get install python-visual libgtkglextmm-x11-1.2-dev
sudo pip
; এটি সিস্টেম অজগর ভেঙে দিতে পারে। সিস্টেম পাইথনের জন্য প্যাকেজ ইনস্টল করতে অ্যাপট-গেট ব্যবহার করুন। আপনি pip --user
নিজের জন্য পাইথন প্যাকেজ ইনস্টল করতে বিকল্প বা ভার্চুয়ালেনভ ব্যবহার করতে পারেন ।
যদি আমরা অযাচিতভাবে প্রশ্নে একটি মডিউল আমদানি করতে না চাই (যা একটি try
বিবৃতিতে ঘটবে ) আমরা sys.modules
ইনস্টল করা এবং আগে আমদানি করা মডিউলগুলি পরীক্ষা করতে ব্যবহার করতে পারি ।
পাইথন শেল ইস্যুতে:
>>> import sys
তারপরে ইনস্টল করা মডিউলগুলির জন্য পরীক্ষা করুন:
>>> 'numpy' in sys.modules
True
>>> 'scipy' in sys.modules
False
মনে রাখবেন যে কেবলমাত্র সেই মডিউলগুলি যা True
এই পরীক্ষার আগে দেওয়ার আগে আমদানি করা হয়েছিল , অন্য সমস্ত মডিউল (এমনকি ইনস্টল করা থাকলেও) এর ফলাফল দেয়False.
পাইথন কনসোলে try
একটি import
বিবৃতি দেওয়ার অন্য বিকল্পটি ইনবিল্ট help()
ফাংশনটিকে কল করছে । এটি ইনস্টল না হওয়া মডিউলগুলির জন্য কোনও ডকুমেন্টেশন দেবে না, যেমন
>>> help('scipy')
no Python documentation found for 'scipy'
ইনস্টল মডিউলগুলির খুব দীর্ঘ সহায়তার নথিগুলির আউটপুট বাধা দেওয়া যেতে পারে Q।
এখন অনুপস্থিত মডিউলগুলি ইনস্টল করার জন্য উবুন্টু প্যাকেজ পরিচালনা (এবং পাইথন পাইপ উপায় নয়) ব্যবহার করার পরামর্শ দেওয়া হচ্ছে কারণ আমাদের রুট অ্যাক্সেস প্রয়োজন এবং আমাদের ভারী পাইথন-নির্ভর সিস্টেমকে গণ্ডগোল রোধ করতেও। প্রশ্নযুক্ত মডিউলটির জন্য এটি হ'ল:
sudo apt-get install python-scipy ## for Python2
sudo apt-get install python3-scipy ## for Python3
ইনস্টলেশন শেষে আমরা sys.modules
সেগুলি একবারে আমদানি করে অভিধানে যুক্ত করতে পারি ।
sys.modules
কেবলমাত্র এমন মডিউল রয়েছে যা ইতিমধ্যে আমদানি করা হয়েছে , সুতরাং এটি মডিউল ইনস্টল করা হয়েছে কিনা তা পরীক্ষা করার কোনও নির্ভরযোগ্য উপায় নয়। সর্বাধিক নির্ভরযোগ্য পরীক্ষাটি হ'ল একটি ব্যবহার করা try/except
এবং ট্র্যাপ করা ImportError
, যেমনটি আরও অনেকে ইতিমধ্যে পরামর্শ দিয়েছেন suggested
sys.modules
তা সম্পূর্ণ অপ্রাসঙ্গিক এবং আমি মনে করি এর কোনও উল্লেখ বিভ্রান্তিকর। তবে সম্ভবত এটি আমিই।
sys.modules
এখানে কোন সাহায্য নেই।
আর একটি উপায় pkgutil
মডিউল। পাইথন 2 এবং 3 উভয়ের সাথেই কাজ করে:
python -c 'import pkgutil; print(1 if pkgutil.find_loader("module") else 0)'
আপনাকে module
আপনার মডিউলটির নামের সাথে প্রতিস্থাপন করতে হবে, উদাহরণস্বরূপ:
$ python -c 'import pkgutil; print(1 if pkgutil.find_loader("math") else 0)'
1
print()
পাইথন 2 এও দুর্দান্ত কাজ করবে; এটি একটি গ্রুপ-সহ-প্যারেন্স সিনট্যাক্স হিসাবে বিবেচিত এবং এর কোনও পার্শ্ব প্রতিক্রিয়া নেই doesn't আপনি যখন একাধিক আইটেম যুক্ত করতে চান (কেবল print('a', 'b')
এটির হিসাবে এটি হিসাবে বিবেচিত হবে tuple
, যার ক্ষেত্রে আপনার প্রয়োজন হয় from __future__ import print_function
তবে এটি প্রযোজ্য নয়, আপনি পেরেন যোগ করে কেবল সামনের ফরওয়ার্ড কোডটি লিখতে পারেন (আমি আমার পরিবর্তনগুলি পরীক্ষা করেছি পাইথন 2 এবং 3 এ)
আমি জানি ওপি মূলত পাইথন শুরু করার পরে একটি সমাধান চেয়েছিল, তবে পাইথনের বাইরে আমি ব্যবহার করি pip
। উবুন্টুতে:, sudo apt-get install python-pip
এটি ইতিমধ্যে ইনস্টল না থাকলে।
তারপরে তৃতীয় পক্ষের মডিউলগুলি উপলব্ধ কি তা দেখতে, চালান:
pip freeze
অথবা এমনকি
pip list
এবং উভয়ই আপনাকে ইনস্টল করা সমস্ত মডিউল এবং তাদের সংস্করণগুলি প্রদর্শন করবে।
আপনি যে মডিউলটির সন্ধান করছেন তা যদি ইনস্টল না করা থাকে তবে বেশিরভাগ সময় আপনি সহজেই পাইপ দিয়ে ইনস্টল করতে পারেন:
pip install <module-name>
কোনও মডিউল বিদ্যমান কিনা বা এর পিপিআই নামটি সম্পর্কে আপনি যদি নিশ্চিত না হন তবে ব্যবহার করুন pip search
:
pip search <keyword>
pip show <module-name>
প্যাকেজ ইনস্টল করা আছে কিনা তা প্রদর্শন করবে, যেমন pip show numpy
।
আপনি কোড ভিতরে রাখতে পারেন try
, except
ব্লক।
$ python3 -c "\
try:
import cow
print('\nModule was installed')
except ImportError:
print('\nThere was no such module installed')"
There was no such module installed
$ python3 -c "\
try:
import regex
print('\nModule was installed')
except ImportError:
print('\nThere was no such module installed')"
Module was installed
সমাপ্তির স্বার্থে আরেকটি উত্তর সরবরাহ করতে:
আপনি (আব) -m
বিকল্পটি ব্যবহার করতে পারেন । পাইথনের ম্যানপেজ থেকে:
-m module-name
Searches sys.path for the named module and runs the correspond‐
ing .py file as a script.
যা আমাদের দেবে:
$ python2 -m numpy
/sbin/python2: No module named numpy.__main__; 'numpy' is a package and cannot be directly executed
$ python2 -m math
/sbin/python2: No code object available for math
তবে অস্তিত্বহীন মডিউলগুলির জন্য এটি আমাদের দেবে:
$ python2 -m doesnt_exist
/sbin/python2: No module named doesnt_exist
আমরা এর grep
জন্য মেলে ব্যবহার করতে পারি:
$ python2 -m doesnt_exist |& grep -q 'No module named' && echo 'Nope' || echo 'Yup'
Nope
$ python2 -m math |& grep -q 'No module named' && echo 'Nope' || echo 'Yup'
Yup
এটি সামান্য হ্যাক-ইশ, এবং এর -m
উদ্দেশ্য কী নয় ; তবে আপনি যদি দ্রুত পরীক্ষা চান তবে এটি সেই পদ্ধতি যা সর্বনিম্ন টাইপিংয়ের প্রয়োজন:
grep -q
অপ্রয়োজনীয় নালায় পুনঃনির্দেশ তৈরি করে।
/dev/null
বছরের পর বছরগুলিতে অনেকগুলি অকেজো পুনঃনির্দেশগুলি টাইপ করেছি : - /
আমি পাইথনে একটি উদাহরণ লিখেছি:
import pip
import sys
from bigml.api import BigML
if not 'bigml' in sys.modules.keys():
pip.main(['install', 'bigml'])
আমি দেখতে পেয়েছি যে আমার অবকাঠামোগত প্রযোজনীয় ** আদর্শহীন করার জন্য, আমাকে অনেলনারের শেল থেকে প্যাকেজটি পরীক্ষা করতে সক্ষম হতে হবে। আমি @ কিউংএলএম এর উত্তরে তৈরি করেছি। আমাকে বিপরীত করতে হয়েছিল 1
এবং 0
কারণ আমি স্ট্রিং প্রিন্ট না করে প্রস্থান স্থিতি তৈরি করছি।
python -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader(sys.argv[1]) else 1)" pymongo
আপনি sys.argv[1]
আপনার প্যাকেজের একক উদ্ধৃত নামের সাথে এটি প্রতিস্থাপন করতে পারেন , তবে আমার বিধানের স্ক্রিপ্টগুলির জন্য আমি এটি শেষে পাঠযোগ্যতার পছন্দ করি।
python -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('pymongo') else 1)"
** আমি বুঝতে পারি যে শেফ , পুতুল এবং উত্তরীয় সবার কাছে পাইথন প্যাকেজ পরিচালনার জন্য প্লাগইন রয়েছে তবে আপনি নিজেকে আমার মতো পরিস্থিতিতে খুঁজে পেতে পারেন যেখানে আপনি একটি পুরানো সংস্করণ ব্যবহার করছেন এবং অবহেলিত প্লাগইন ব্যবহার করতে চান না।
একটিও ব্যবহার pydoc modules
করতে পারে, যা grep
নির্দিষ্ট মডিউলটি খুঁজে পেতে ফিল্টার করা যায়। আউটপুট কলামেটেড ফর্ম্যাটে প্রদর্শিত হয়। এই পদ্ধতির একমাত্র অসুবিধা হ'ল এটি বর্তমান ওয়ার্কিং ডিরেক্টরিতে পাইথন ফাইলগুলি অন্তর্ভুক্ত করবে। তা সত্ত্বেও, আমি এটি বেশিরভাগ সময় নিজেই ব্যবহার করি এবং এটি সম্পর্কিত প্রশ্নে এটি একটি উচ্চ উদ্ধৃত পন্থা: https://stackoverflow.com/q/739993/3701431
উবুন্টু শেল থেকে, সাধারণ হিসাবে সাধারণ ডিফল্ট ব্যাশ
pip list | grep <package-name-Case-Matters>
উদাহরণ
pip list | grep pywinrm
pip list | grep numpy
এবং, যদি মামলা সম্পর্কে আপনার সন্দেহ থাকে (যদিও আমি মনে করি সমস্ত প্যাকেজের নাম সর্বদা ছোট হাতের অক্ষরে থাকে):
pip list | grep [Nn]um[Pp]y # it works with numpy, Numpy, numPy, and NumPy
এটি লেখার pip show ...
ক্ষেত্রে এটি সবচেয়ে সহজ উপায় বলে মনে হচ্ছে:
https://pip.pypa.io/en/stable/references/pip_show/
প্যাকেজ ইনস্টল না করা অবস্থায় এটি নিরব থাকে (অর্থাত্ কিছু দেয় না)।