প্রোগ্রামটি চালুর আগে এটি ইনস্টল করা হয়েছে কিনা তা যাচাই করা দরকার।
প্রোগ্রামটি চালুর আগে এটি ইনস্টল করা হয়েছে কিনা তা যাচাই করা দরকার।
উত্তর:
আপনি ব্যবহার করা উচিত pip
'র list
, grep সঙ্গে কমান্ড যে শুধুমাত্র তালিকা ইনস্টল করা প্যাকেজ (সব মডিউল এবং তাদের প্রতিবেশীদের পাশাপাশি):
pip list | grep -F package_name
যদি প্যাকেজ_নাম একাধিক ইনস্টল করা প্যাকেজগুলির সাথে মেলে যেমনঃ boto
কখন botocore
ইনস্টল করা আছে তা অনুসন্ধান করা, তবে তারত -w
পরিবর্তে ব্যবহার করা -F
সহায়তা করতে পারে, যেমন @ তারাপ্রসাদগুরুং পরামর্শ দেয়। এটি সঠিক প্যাকেজটির তালিকা করে না, -w
প্যাকেজের নামে অক্ষরগুলিকে শব্দের সীমানা হিসাবে দেখায়। সুতরাং আপনি যদি ইনস্টল করেছেন বা ইনস্টল করেছেন requests
এবং এবং এবং ruamel.yaml.cmd` এবং সঠিক এক লাইনের আউটপুট প্রয়োজন আপনার কিছু করতে হবে:requests-cache
ruamel.yaml
pip list --disable-pip-version-check | grep -E "^ruamel\.yaml "
দয়া করে নোট করুন যেহেতু যে .
কোনও চরিত্রের সাথে মেলে -E
এমনটি ব্যবহার করার সময় , আপনাকে এটি এড়িয়ে চলতে হবে ¹
¹ এবং হ্যাঁ এটি প্রয়োজনীয় কারণ সেখানে প্যাকেজ রয়েছে ruamel_yaml
। pip
নেমস্পেস প্যাকেজগুলির সাথে কাজ করার সময় প্রতিটি প্যাকেজ ম্যানেজার উপযুক্ত নয় ।
-w
শব্দ সীমানা হিসাবে নেওয়া হয় এবং প্যাকেজের নামে সাধারণ names আমি আপনার পরামর্শ ব্যবহার করে grep -w ruamel.yaml
বা একাধিক ম্যাচ পেয়েছি grep -w request
pip list | grep -F mxnet-cu101
মুদ্রণগুলি mxnet-cu101 1.5.0
, তবে এটি কোথায় ইনস্টল করা হয়েছে তা ঠিক নয়। কীভাবে ইনস্টলড পাথ পাবেন? `
আমি বিদ্যমান উত্তরগুলি অসম্পূর্ণ এবং ভাল উদাহরণের অভাব পেয়েছি। আমি যে সমাধানটি স্থির করেছি তা এখানে:
# an example checking if the pandas package is installed
if python -c 'import pkgutil; exit(not pkgutil.find_loader("pandas"))'; then
echo 'pandas found'
else
echo 'pandas not found'
fi
এই উদাহরণটির একটি গিথুব টুকরোটি এখানে পাওয়া যাবে: https://gist.github.com/shaypal5/d505af9953cd86f59c750fa600ee4ba6
আপনি আপনার স্ক্রিপ্টগুলিতে এর মতো কিছু ব্যবহার করতে পারেন।
python -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('$Package') else 1)"
কোনও প্যাকেজ ইনস্টল না থাকলে আপনি কী পাবেন।
Package=psutil
python3 -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('$Package') else 1)"
echo $?
1
প্যাকেজ ইনস্টল হওয়ার পরে আপনি কী পাবেন।
Package=requests
python3 -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('$Package') else 1)"
echo $?
0
পাইথন 2 এবং পাইথন 3 এ কাজ করে এবং তারপরে আপনি প্রস্থান কোডের উপর ভিত্তি করে ইনস্টল করেন।
স্ক্রিপ্টে ব্যবহারের জন্য আমি অ্যান্থনের উত্তরের একটি সামান্য কঠোর সংস্করণ ব্যবহার করেছি:
pip3 list |
grep -v "^Package *Version$" | grep -v "^-*$" |
cut -d ' ' -f 1 |
grep -xF "$package_name"
প্রথম দুটি গ্রেপ পিপ 3 এর আউটপুট থেকে শিরোনামের লাইনগুলি ছাঁটাই করার উদ্দেশ্যে।
কাটাটি কেবল প্যাকেজের নাম নির্বাচন করে (সংস্করণ সংখ্যাগুলি ত্যাগ করে)।
তারপরে চূড়ান্ত গ্রেপ প্রাসঙ্গিকের জন্য একটি সঠিক অনুসন্ধান করতে পারে $package_name
যদি প্যাকেজটি পাওয়া যায়, এটি প্যাকেজের নাম প্রদর্শন করবে এবং প্রস্থান কোড 0 দিয়ে ফিরে আসবে আপনি যদি প্যাকেজের নামটি দেখতে না চান তবে কমান্ডটি দিয়ে শেষ করুন >/dev/null
পাইথন শেল / প্রম্পটে। :
>>> help('modules')
পাইপ 3 দিয়ে পরীক্ষিত:
$> pip3 show MODULENAME
মডিউলটি ইনস্টল হওয়ার পরে প্রস্থান কোড ($?) "0" হবে, অন্যথায় "1"।
গ্রেপিংয়ে "মিথ্যা ধনাত্মক" সমস্যা রয়েছে: এ এর আউটপুট
pip list | grep NAME
যে নামটিতে "NAME" রয়েছে এমন কোনও মডিউলে মিলবে, উদাহরণস্বরূপ "" some_other_NAME "এর সাথেও মেলে।
যদিও
pip3 show MODULENAME
সম্পূর্ণ ম্যাচগুলিতে কেবল ম্যাচ।
pip install
। যদি এটি ইতিমধ্যে ইনস্টল করা থাকে তবে এটি আবার ইনস্টল করবে না।