ในฐานะที่เป็น @sinoroc แนะนำวิธีที่ถูกต้องในการติดตั้งแพคเกจผ่าน pip คือการใช้กระบวนการแยกจากกันตั้งแต่จุดเล็ก ๆ อาจทำให้เกิดการปิดด้ายหรืออาจจำเป็นต้องเริ่มต้นใหม่ของล่ามในการโหลดแพคเกจติดตั้งใหม่ดังนั้นนี้เป็นวิธีที่เหมาะสมของการใช้ API: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])
แต่เนื่องจากช่วยให้งูหลาม เพื่อเข้าถึง API ภายในและคุณรู้ว่าคุณกำลังใช้ API อะไรอยู่คุณอาจต้องการใช้ API ภายในเช่นกัน หากคุณกำลังสร้างตัวจัดการแพ็คเกจ GUI ของตัวเองโดยใช้ทรัพยากรอื่นเช่นhttps://www.lfd.uci.edu/~gohlke/pythonlibs/
การติดตามวิญญาณออกจากวันที่ DATE แทนที่จะเป็นการลงคะแนนเสียงแนะนำการอัปเดต ดูhttps://github.com/pypa/pip/issues/7498สำหรับการอ้างอิง
UPDATE :
ตั้งแต่เวอร์ชั่น pip 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']
หากคุณต้องการใช้ pip ภายในตัวแปลภาษา Python ลองทำดังนี้:
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 จริง ๆ หากคุณแกะpip.exe
หรือพิจารณาpip3.exe
ว่าเป็นงูหลาม 2.x หรือ 3.x ภายในเป็นไฟล์เดียว SAME __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())