जैसा कि @sinoroc ने पाइप के माध्यम से एक पैकेज को स्थापित करने का सही तरीका सुझाया है क्योंकि पाइप एक थ्रेड को बंद करने का कारण हो सकता है या नए स्थापित पैकेज को लोड करने के लिए दुभाषिया को फिर से शुरू करने की आवश्यकता हो सकती है, इसलिए यह एपीआई का उपयोग करने का सही तरीका है: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])लेकिन चूंकि पायथन अनुमति देता है आंतरिक एपीआई का उपयोग करने के लिए और आप जानते हैं कि आप एपीआई का उपयोग कर रहे हैं, आप वैसे भी आंतरिक एपीआई का उपयोग करना चाहते हैं। अगर आप https://www.lfd.uci.edu/~gohlke/pythonlibs/ जैसे वैकल्पिक रिसोर्स के साथ अपना GUI पैकेज मैनेजर बना रहे हैं
निम्नलिखित सुझाव देने के बजाय आत्मा का पालन करना DATE का DUT है। संदर्भ के लिए https://github.com/pypa/pip/issues/7498 देखें ।
अद्यतन :
पाइप संस्करण 10.x के
बजाय उपयोग के तहत कोई अधिक
get_installed_distributions()या
mainविधि नहीं है ।
import pip import pip._internal as pip
अद्यतन करें। v.18 get_installed_distributions() को हटा दिया गया है। इसके बजाय आप freezeइस तरह जनरेटर का उपयोग कर सकते हैं :
from pip._internal.operations.freeze import freeze
print([package for package in freeze()])
# eg output ['pip==19.0.3']
यदि आप पायथन इंटरप्रेटर के अंदर पाइप का उपयोग करना चाहते हैं, तो यह प्रयास करें:
import pip
package_names=['selenium', 'requests'] #packages to install
pip.main(['install'] + package_names + ['--upgrade'])
# --upgrade to install or update existing packages
यदि आपको प्रत्येक इंस्टॉल किए गए पैकेज को अपडेट करने की आवश्यकता है, तो निम्न का उपयोग करें:
import pip
for i in pip.get_installed_distributions():
pip.main(['install', i.key, '--upgrade'])
यदि आप किसी भी स्थापना के विफल होने पर अन्य पैकेजों को स्थापित करना बंद करना चाहते हैं, तो इसे एक ही pip.main([])कॉल में उपयोग करें:
import pip
package_names = [i.key for i in pip.get_installed_distributions()]
pip.main(['install'] + package_names + ['--upgrade'])
नोट : जब आप फ़ाइल में सूची -r/ --requirementपैरामीटर के साथ सूची से स्थापित करते हैं, तो आपको खुले () फ़ंक्शन की आवश्यकता नहीं होती है।
pip.main(['install', '-r', 'filename'])
चेतावनी : कुछ पैरामीटर सरल होने के --helpकारण अजगर दुभाषिया बंद हो सकता है।
जिज्ञासा: pip.exeआप वास्तव में वैसे भी अजगर इंटरप्रेटर और पाइप मॉड्यूल का उपयोग करके । यदि आप अनपैक करते हैं pip.exeया pip3.exeपरवाह किए बिना यह अजगर 2.x या 3.x है, तो अंदर एक ही फाइल है __main__.py:
# -*- coding: utf-8 -*-
import re
import sys
from pip import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())