Seperti @sinoroc menyarankan cara yang benar untuk menginstal paket melalui pip menggunakan proses terpisah karena pip dapat menyebabkan penutupan utas atau mungkin memerlukan restart penerjemah untuk memuat paket yang diinstal baru jadi ini adalah cara yang tepat untuk menggunakan API: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])
tetapi karena Python mengizinkan untuk mengakses API internal dan Anda tahu apa yang Anda gunakan API untuk Anda mungkin ingin menggunakan API internal misalnya. jika Anda membangun manajer paket GUI sendiri dengan sumber daya alternatif seperti https://www.lfd.uci.edu/~gohlke/pythonlibs/
Mengikuti soulution adalah OUT OF DATE, bukannya downvoting menyarankan pembaruan. lihat https://github.com/pypa/pip/issues/7498 untuk referensi.
UPDATE :
Sejak versi pip 10.x tidak ada lagi
get_installed_distributions()
atau
main
metode di bawah
import pip
bukan menggunakan import pip._internal as pip
.
PEMBARUAN ca. v.18 get_installed_distributions()
telah dihapus. Sebagai gantinya, Anda dapat menggunakan generator freeze
seperti ini:
from pip._internal.operations.freeze import freeze
print([package for package in freeze()])
# eg output ['pip==19.0.3']
Jika Anda ingin menggunakan pip di dalam interpreter Python, coba ini:
import pip
package_names=['selenium', 'requests'] #packages to install
pip.main(['install'] + package_names + ['--upgrade'])
# --upgrade to install or update existing packages
Jika Anda perlu memperbarui setiap paket yang diinstal, gunakan yang berikut ini:
import pip
for i in pip.get_installed_distributions():
pip.main(['install', i.key, '--upgrade'])
Jika Anda ingin berhenti menginstal paket lain jika ada instalasi yang gagal, gunakan dalam satu pip.main([])
panggilan:
import pip
package_names = [i.key for i in pip.get_installed_distributions()]
pip.main(['install'] + package_names + ['--upgrade'])
Catatan : Ketika Anda menginstal dari daftar dalam file dengan -r
/ --requirement
parameter Anda TIDAK perlu fungsi open ().
pip.main(['install', '-r', 'filename'])
Peringatan : Beberapa parameter sesederhana --help
mungkin menyebabkan interpreter python berhenti.
Keingintahuan: Dengan menggunakan pip.exe
Anda sebenarnya menggunakan interpreter python dan modul pip. Jika Anda membongkar pip.exe
atau pip3.exe
mengabaikannya python 2.x atau 3.x, di dalamnya adalah file tunggal SAMA __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())