পাইথনে মডিউল ইনস্টল করা আছে কিনা তা আমি কীভাবে যাচাই করব এবং প্রয়োজনে এটি ইনস্টল করব?


89

টার্মিনালে, আমি পাইথন শুরু করার পরে, আমি কীভাবে জানতে পারি অজগরটিতে মডিউলগুলি কী রয়েছে? ধরুন আমার NumPy এবং SciPy মডিউলগুলি শিখতে হবে।

  • এটি ইনস্টল না হলে কীভাবে এটি ইনস্টল করব?
  • এটি ইতিমধ্যে ইনস্টল করা থাকলে কীভাবে জানব?

উত্তর:


73

পাইথন মডিউল ইনস্টল করা আছে কি না তা কীভাবে জানবেন: সিস্টেমে আপনি খুব সহজ পরীক্ষা করতে পারেন,

$ 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স্থানীয় ভার্চুয়াল পরিবেশে প্যাকেজগুলি কীভাবে ইনস্টল করবেন ।


আপনার উত্তরের মতো গণিতের মডিউলটি বিদ্যমান এবং অসাধ্যতার জন্য ট্রেসব্যাকটি প্রদর্শিত হয়নি এবং প্রতিধ্বনির জন্য $? আউটপুট 0 ছিল, এর অর্থ কি আমার সিস্টেমে নম্পুটি উপস্থিত রয়েছে?
টেকঝোল

1
হ্যাঁ, এটি আপনার সিস্টেমে রয়েছে।
সৌরভ

যদি আপনার কাছে মডিউলটি নম্পু না থাকে আপনি কীভাবে এটি আমদানি করবেন? যখন আমরা কোডিং করি আমরা নাম্বার আমদানি * দ্বারা আমদানি বিবৃতি কল করি, এটি কি মডিউলটি ইনস্টল করবে? তা না হলে আমরা কীভাবে একটি নতুন মডিউল ইনস্টল করব?
টেকঝোল

1
এটি একটি মডিউল ইনস্টল করার জন্য একটি সেপ্টেট প্রশ্ন হবে। বিভিন্ন মডিউল জন্য বিভিন্ন প্যাকেজ প্রয়োজন। উদাহরণস্বরূপ ইনস্টল করার জন্য vpythonআপনাকে এটিকে ইনস্টল করতে হবেsudo apt-get install python-visual libgtkglextmm-x11-1.2-dev
souravc

1
ব্যবহার করবেন না sudo pip; এটি সিস্টেম অজগর ভেঙে দিতে পারে। সিস্টেম পাইথনের জন্য প্যাকেজ ইনস্টল করতে অ্যাপট-গেট ব্যবহার করুন। আপনি pip --userনিজের জন্য পাইথন প্যাকেজ ইনস্টল করতে বিকল্প বা ভার্চুয়ালেনভ ব্যবহার করতে পারেন ।
jfs

21

যদি আমরা অযাচিতভাবে প্রশ্নে একটি মডিউল আমদানি করতে না চাই (যা একটি 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সেগুলি একবারে আমদানি করে অভিধানে যুক্ত করতে পারি ।


1
আমি মনে করি এটি সর্বাধিক পাইথোনিক উত্তর ....
গ্রিজেশ চৌহান

3
এর প্রথম অংশটি ভুল: sys.modulesকেবলমাত্র এমন মডিউল রয়েছে যা ইতিমধ্যে আমদানি করা হয়েছে , সুতরাং এটি মডিউল ইনস্টল করা হয়েছে কিনা তা পরীক্ষা করার কোনও নির্ভরযোগ্য উপায় নয়। সর্বাধিক নির্ভরযোগ্য পরীক্ষাটি হ'ল একটি ব্যবহার করা try/exceptএবং ট্র্যাপ করা ImportError, যেমনটি আরও অনেকে ইতিমধ্যে পরামর্শ দিয়েছেন suggested
এখুমোরো

@ এখুমোরো - ধন্যবাদ, আমি আরও পরিষ্কার করার জন্য আমার উত্তরটি সম্পাদনা করব।
তাক্কাত

4
এটি এখনও যথেষ্ট পরিষ্কার নয় বলে মনে হচ্ছে। প্রদত্ত যে প্রশ্নটি জিজ্ঞাসা করছে যে কীভাবে মডিউল ইনস্টল করা হয়েছে ( আমদানি করা হয়নি ) sys.modulesতা সম্পূর্ণ অপ্রাসঙ্গিক এবং আমি মনে করি এর কোনও উল্লেখ বিভ্রান্তিকর। তবে সম্ভবত এটি আমিই।
ডেভিড জেড

1
sys.modulesএখানে কোন সাহায্য নেই।
বিড়াল

19

আর একটি উপায় 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

2
আমি আপনাকে আমার কিছু পরিবর্তন আনতে দেখেছি; print()পাইথন 2 এও দুর্দান্ত কাজ করবে; এটি একটি গ্রুপ-সহ-প্যারেন্স সিনট্যাক্স হিসাবে বিবেচিত এবং এর কোনও পার্শ্ব প্রতিক্রিয়া নেই doesn't আপনি যখন একাধিক আইটেম যুক্ত করতে চান (কেবল print('a', 'b')এটির হিসাবে এটি হিসাবে বিবেচিত হবে tuple, যার ক্ষেত্রে আপনার প্রয়োজন হয় from __future__ import print_functionতবে এটি প্রযোজ্য নয়, আপনি পেরেন যোগ করে কেবল সামনের ফরওয়ার্ড কোডটি লিখতে পারেন (আমি আমার পরিবর্তনগুলি পরীক্ষা করেছি পাইথন 2 এবং 3 এ)
মার্টিন টর্নয়েজ

@ কার্পেটস্মোকার: নির্দেশ করার জন্য ধন্যবাদ। আমি পুরানো সংস্করণে রোলব্যাক করছি।
cuonglm

এটি একটি দুর্দান্ত উত্তর। আমি একটি ডেরাইভেটিভ উত্তর যুক্ত করেছি যা একটি প্রস্থান / স্থিতি কোড দেয় (শেল স্ক্রিপ্ট প্রবাহ নিয়ন্ত্রণের জন্য) এবং মডিউলটির নাম কমান্ড লাইন আর্গুমেন্ট হিসাবে গ্রহণ করে। Askubuntu.com/a/891384/146273
ব্রুনো ব্রোনোস্কি

যে কাজ! - শুধু পরিবর্তন exitতাই এটি শেল প্রেক্ষাপটে ব্যবহার করা যেতে পারে:python -c 'import pkgutil; exit(0 if pkgutil.find_loader("math") else 2)'
যেমন AT

12

আমি জানি ওপি মূলত পাইথন শুরু করার পরে একটি সমাধান চেয়েছিল, তবে পাইথনের বাইরে আমি ব্যবহার করি pip। উবুন্টুতে:, sudo apt-get install python-pipএটি ইতিমধ্যে ইনস্টল না থাকলে।

তারপরে তৃতীয় পক্ষের মডিউলগুলি উপলব্ধ কি তা দেখতে, চালান:

pip freeze

অথবা এমনকি

pip list

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

আপনি যে মডিউলটির সন্ধান করছেন তা যদি ইনস্টল না করা থাকে তবে বেশিরভাগ সময় আপনি সহজেই পাইপ দিয়ে ইনস্টল করতে পারেন:

pip install <module-name>

কোনও মডিউল বিদ্যমান কিনা বা এর পিপিআই নামটি সম্পর্কে আপনি যদি নিশ্চিত না হন তবে ব্যবহার করুন pip search:

pip search <keyword>

1
এছাড়াও, pip show <module-name>প্যাকেজ ইনস্টল করা আছে কিনা তা প্রদর্শন করবে, যেমন pip show numpy
হার্পিস ফ্রি ইঞ্জিনিয়ার

10

আপনি কোড ভিতরে রাখতে পারেন 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

6

সমাপ্তির স্বার্থে আরেকটি উত্তর সরবরাহ করতে:

আপনি (আব) -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উদ্দেশ্য কী নয় ; তবে আপনি যদি দ্রুত পরীক্ষা চান তবে এটি সেই পদ্ধতি যা সর্বনিম্ন টাইপিংয়ের প্রয়োজন:


4
grep -qঅপ্রয়োজনীয় নালায় পুনঃনির্দেশ তৈরি করে।
মুরু

3
@ মুরু ইয়েস! আমি /dev/nullবছরের পর বছরগুলিতে অনেকগুলি অকেজো পুনঃনির্দেশগুলি টাইপ করেছি : - /
মার্টিন টর্নয়েজ

4

আমি পাইথনে একটি উদাহরণ লিখেছি:

import pip
import sys
from bigml.api import BigML


if not 'bigml' in sys.modules.keys():
    pip.main(['install', 'bigml'])

3

শেল অনেলাইনার চেক (বিধানের জন্য দরকারী)

আমি দেখতে পেয়েছি যে আমার অবকাঠামোগত প্রযোজনীয় ** আদর্শহীন করার জন্য, আমাকে অনেলনারের শেল থেকে প্যাকেজটি পরীক্ষা করতে সক্ষম হতে হবে। আমি @ কিউংএলএম এর উত্তরে তৈরি করেছি। আমাকে বিপরীত করতে হয়েছিল 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)"

** আমি বুঝতে পারি যে শেফ , পুতুল এবং উত্তরীয় সবার কাছে পাইথন প্যাকেজ পরিচালনার জন্য প্লাগইন রয়েছে তবে আপনি নিজেকে আমার মতো পরিস্থিতিতে খুঁজে পেতে পারেন যেখানে আপনি একটি পুরানো সংস্করণ ব্যবহার করছেন এবং অবহেলিত প্লাগইন ব্যবহার করতে চান না।


1

একটিও ব্যবহার pydoc modulesকরতে পারে, যা grepনির্দিষ্ট মডিউলটি খুঁজে পেতে ফিল্টার করা যায়। আউটপুট কলামেটেড ফর্ম্যাটে প্রদর্শিত হয়। এই পদ্ধতির একমাত্র অসুবিধা হ'ল এটি বর্তমান ওয়ার্কিং ডিরেক্টরিতে পাইথন ফাইলগুলি অন্তর্ভুক্ত করবে। তা সত্ত্বেও, আমি এটি বেশিরভাগ সময় নিজেই ব্যবহার করি এবং এটি সম্পর্কিত প্রশ্নে এটি একটি উচ্চ উদ্ধৃত পন্থা: https://stackoverflow.com/q/739993/3701431


0

উবুন্টু শেল থেকে, সাধারণ হিসাবে সাধারণ ডিফল্ট ব্যাশ

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

0

এটি লেখার pip show ...ক্ষেত্রে এটি সবচেয়ে সহজ উপায় বলে মনে হচ্ছে: https://pip.pypa.io/en/stable/references/pip_show/

প্যাকেজ ইনস্টল না করা অবস্থায় এটি নিরব থাকে (অর্থাত্ কিছু দেয় না)।

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