পাইথন 3 এ মডিউল বা প্যাকেজ ইতিমধ্যে ইনস্টল রয়েছে কিনা তা কীভাবে পরীক্ষা করবেন?


10

প্রোগ্রামটি চালুর আগে এটি ইনস্টল করা হয়েছে কিনা তা যাচাই করা দরকার।


2
শুধু চালান pip install। যদি এটি ইতিমধ্যে ইনস্টল করা থাকে তবে এটি আবার ইনস্টল করবে না।
jordanm

আপনাকে জর্দান, তবে আমার চেক করে পরীক্ষা করা উচিত / এও / পি দেওয়া দরকার।
হুবাত্রিক্স

উত্তর:


3

শেল টাইপ করুন: pydoc modules
এটি মডিউলগুলি তালিকাভুক্ত করবে এবং আপনি যে মডিউলটি চান তা গ্রেপ করতে পারবেন। এখানে
স্ট্যাকওভারফ্লোতে পাওয়া গেছে


11

আপনি ব্যবহার করা উচিত pip'র list, grep সঙ্গে কমান্ড যে শুধুমাত্র তালিকা ইনস্টল করা প্যাকেজ (সব মডিউল এবং তাদের প্রতিবেশীদের পাশাপাশি):

pip list | grep -F package_name

যদি প্যাকেজ_নাম একাধিক ইনস্টল করা প্যাকেজগুলির সাথে মেলে যেমনঃ botoকখন botocoreইনস্টল করা আছে তা অনুসন্ধান করা, তবে তারত -wপরিবর্তে ব্যবহার করা -Fসহায়তা করতে পারে, যেমন @ তারাপ্রসাদগুরুং পরামর্শ দেয়। এটি সঠিক প্যাকেজটির তালিকা করে না, -wপ্যাকেজের নামে অক্ষরগুলিকে শব্দের সীমানা হিসাবে দেখায়। সুতরাং আপনি যদি ইনস্টল করেছেন বা ইনস্টল করেছেন requestsএবং এবং এবং ruamel.yaml.cmd` এবং সঠিক এক লাইনের আউটপুট প্রয়োজন আপনার কিছু করতে হবে:requests-cacheruamel.yaml

pip list --disable-pip-version-check | grep -E "^ruamel\.yaml "

দয়া করে নোট করুন যেহেতু যে .কোনও চরিত্রের সাথে মেলে -Eএমনটি ব্যবহার করার সময় , আপনাকে এটি এড়িয়ে চলতে হবে ¹


¹ এবং হ্যাঁ এটি প্রয়োজনীয় কারণ সেখানে প্যাকেজ রয়েছে ruamel_yamlpipনেমস্পেস প্যাকেজগুলির সাথে কাজ করার সময় প্রতিটি প্যাকেজ ম্যানেজার উপযুক্ত নয় ।


এটির সাথে সমস্যাটি যদি প্যাকেজ নেম বোটো এবং বোটোকোর ইনস্টল করা থাকে তবে এটি উভয়ের তালিকা তৈরি করবে। সুতরাং আরও ভাল সমাধান হ'ল সঠিক প্যাকেজ তালিকাভুক্ত করতে -F এর পরিবর্তে -w পতাকা ব্যবহার করা হবে
তারা প্রসাদ গুরুং

@ তারাপ্রসাদগুরুং যদিও আউটপুট কিছুটা হ্রাস করতে পারে এটি আপনার দাবি অনুসারে সঠিক প্যাকেজ পেতে সহায়তা করে না। উদাহরণস্বরূপ বিন্দু এবং ড্যাশ -wশব্দ সীমানা হিসাবে নেওয়া হয় এবং প্যাকেজের নামে সাধারণ names আমি আপনার পরামর্শ ব্যবহার করে grep -w ruamel.yamlবা একাধিক ম্যাচ পেয়েছি grep -w request
এ্যানথন

pip list | grep -F mxnet-cu101মুদ্রণগুলি mxnet-cu101 1.5.0, তবে এটি কোথায় ইনস্টল করা হয়েছে তা ঠিক নয়। কীভাবে ইনস্টলড পাথ পাবেন? `
আনু

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

4

যদি প্যাকেজটি আমদানিতে কিছু ক্রেজি বা সময়সাপেক্ষ কিছু না করে আপনি আসলে এটি আমদানির চেষ্টা করতে পারেন:

if python -c "import package_name" &> /dev/null; then
    echo 'all good'
else
    echo 'uh oh'
fi

2

আমি বিদ্যমান উত্তরগুলি অসম্পূর্ণ এবং ভাল উদাহরণের অভাব পেয়েছি। আমি যে সমাধানটি স্থির করেছি তা এখানে:

# 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



1
ব্যাশ কোডটি একই, পাইথন কোডটি ভিন্ন, যা বেশ পার্থক্য করে। আমার নিজের যুক্ত করা বেছে নেওয়ার আগে আমি সমস্ত বিদ্যমান উত্তরগুলি পড়েছি এবং আপনি যে নির্দিষ্ট উত্তরটি যুক্ত করেছেন তা আমার পক্ষে কার্যকর হয়নি। সুতরাং, আমি এখানে আমার উত্তর যুক্ত করতে এটি প্রাসঙ্গিক এবং মূল্যবান বলে মনে করি। :)
শাইপাল 5

1

আপনি আপনার স্ক্রিপ্টগুলিতে এর মতো কিছু ব্যবহার করতে পারেন।

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 এ কাজ করে এবং তারপরে আপনি প্রস্থান কোডের উপর ভিত্তি করে ইনস্টল করেন।


0

স্ক্রিপ্টে ব্যবহারের জন্য আমি অ্যান্থনের উত্তরের একটি সামান্য কঠোর সংস্করণ ব্যবহার করেছি:

pip3 list |
    grep -v "^Package *Version$" | grep -v "^-*$" |
    cut -d ' ' -f 1 |
    grep -xF "$package_name"

প্রথম দুটি গ্রেপ পিপ 3 এর আউটপুট থেকে শিরোনামের লাইনগুলি ছাঁটাই করার উদ্দেশ্যে।

কাটাটি কেবল প্যাকেজের নাম নির্বাচন করে (সংস্করণ সংখ্যাগুলি ত্যাগ করে)।

তারপরে চূড়ান্ত গ্রেপ প্রাসঙ্গিকের জন্য একটি সঠিক অনুসন্ধান করতে পারে $package_name

যদি প্যাকেজটি পাওয়া যায়, এটি প্যাকেজের নাম প্রদর্শন করবে এবং প্রস্থান কোড 0 দিয়ে ফিরে আসবে আপনি যদি প্যাকেজের নামটি দেখতে না চান তবে কমান্ডটি দিয়ে শেষ করুন >/dev/null



0

পাইপ 3 দিয়ে পরীক্ষিত:

$> pip3 show MODULENAME

মডিউলটি ইনস্টল হওয়ার পরে প্রস্থান কোড ($?) "0" হবে, অন্যথায় "1"।

গ্রেপিংয়ে "মিথ্যা ধনাত্মক" সমস্যা রয়েছে: এ এর ​​আউটপুট

pip list | grep NAME

যে নামটিতে "NAME" রয়েছে এমন কোনও মডিউলে মিলবে, উদাহরণস্বরূপ "" some_other_NAME "এর সাথেও মেলে।

যদিও

pip3 show MODULENAME

সম্পূর্ণ ম্যাচগুলিতে কেবল ম্যাচ।

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