जवाबों:
आप का उपयोग करना चाहिए pip
के list
ग्रेप साथ आदेश, कि केवल सूचियों इंस्टॉल किए गए पैकेज (नहीं सभी मॉड्यूल और अपने पड़ोसियों के साथ-साथ):
pip list | grep -F package_name
यदि package_name कई स्थापित संकुल से मेल खाता है, जैसे कि boto
जब botocore
भी स्थापित किया गया है, तब खोज करना , तो मदद के -w
बजाय -F
@TaraPrasadGurung से पता चलता है। यह सटीक पैकेज को सूचीबद्ध नहीं करता है, जैसा -w
कि शब्द सीमाओं के रूप में पैकेज नामों में सामान्य वर्णों को देखता है। तो अगर आप requests
और requests-cache
स्थापित या या ruamel.yaml
नष्ट कर दिया है। श्यामल। Cmd` और उत्पादन की एक पंक्ति की आवश्यकता है, तो आपको कुछ करने की आवश्यकता है:
pip list --disable-pip-version-check | grep -E "^ruamel\.yaml "
कृपया ध्यान दें कि चूंकि .
उपयोग करते समय किसी भी वर्ण से मेल खाता है -E
, इसलिए आपको इससे बचने की आवश्यकता है
। और हाँ यह आवश्यक है क्योंकि एक पैकेज है ruamel_yaml
। प्रत्येक पैकेज प्रबंधक pip
संगत नहीं है जब नेमस्पेस पैकेज के साथ काम कर रहा है।
-w
शब्द सीमाओं के रूप में लिए गए हैं और पैकेज नामों में सामान्य हैं। जब मैं आपके सुझाव का उपयोग करता हूं तो मुझे कई मैच मिलते हैं 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
इस उदाहरण का एक Github gist यहां पाया जा सकता है: 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
Python2 और python3 में काम करता है, और फिर आप बाहर निकलने के कोड के आधार पर इंस्टॉल करते हैं।
मैंने स्क्रिप्ट में उपयोग के लिए एंथन के उत्तर का थोड़ा सख्त संस्करण इस्तेमाल किया:
pip3 list |
grep -v "^Package *Version$" | grep -v "^-*$" |
cut -d ' ' -f 1 |
grep -xF "$package_name"
पहले दो ग्रीप्स को पाइप 3 के आउटपुट से हेडर लाइनों को हटाने का इरादा है।
कट तब केवल पैकेज नामों (संस्करण संख्याओं को छोड़कर) का चयन करता है।
फिर अंतिम grep प्रासंगिक के लिए सटीक खोज कर सकता है $package_name
यदि पैकेज पाया जाता है, तो यह पैकेज नाम प्रदर्शित करेगा, और बाहर निकलने के कोड के साथ वापस लौटेगा। 0. यदि आप पैकेज का नाम नहीं देखना चाहते हैं, तो उसके साथ अंत करें >/dev/null
पायथन शेल / प्रॉम्प्ट में। :
>>> help('modules')
Pip3 के साथ परीक्षण किया गया:
$> pip3 show MODULENAME
यदि मॉड्यूल स्थापित है, तो निकास कोड ($!) "0" होगा, "1"।
ग्रेपिंग को "झूठी सकारात्मक" की समस्या है: एक का उत्पादन
pip list | grep NAME
किसी भी मॉड्यूल पर मेल करेगा जिसका नाम "NAME" है, उदाहरण के लिए "some_other_NAME" से भी मेल खाता है।
जबकि
pip3 show MODULENAME
केवल पूर्ण मैचों पर मेल खाता है।
pip install
। यदि यह पहले से स्थापित है, तो यह इसे फिर से स्थापित नहीं करेगा।