जैसा कि @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())