Saya perlu menginstal paket dari PyPi langsung dalam skrip saya. Mungkin ada beberapa modul atau fitur distutils
( distribute
, pip
dll.) Yang memungkinkan saya untuk menjalankan sesuatu seperti pypi.install('requests')
dan permintaan akan diinstal ke dalam virtualenv saya.
python
pip
python-module
pypi
chuwy
sumber
sumber
pip
tidak pernah merupakan ide yang baik - fakta bahwa semua isinya_internal
mulai dari versi 10 ...pip._internal
tidak dirancang untuk dapat diimpor, ia dapat melakukan hal-hal yang benar-benar acak ketika diimpor dalam program lain.Jawaban:
Cara yang disarankan secara resmi untuk menginstal paket dari skrip adalah dengan memanggil antarmuka baris perintah pip melalui subproses. Sebagian besar jawaban lain yang disajikan di sini tidak didukung oleh pip . Selain itu sejak pip v10, semua kode telah dipindahkan ke
pip._internal
tepatnya untuk menjelaskan kepada pengguna bahwa penggunaan program pip tidak diizinkan.Gunakan
sys.executable
untuk memastikan bahwa Anda akan memanggil yang samapip
terkait dengan runtime saat ini.sumber
Anda juga dapat menggunakan sesuatu seperti:
sumber
pip.main()
seperti yang Anda lakukan pada baris perintah (tetapi dengan setiap opsi sebagai entri terpisah dalam daftar, alih-alih string tunggal). Dan untuk menentukan versi paket yang Anda inginkan, lakukan hal yang sama seperti pada baris perintah .. mis:pip.main(['install', 'pip==7.1.0'])
from pip._internal import main as pipmain
maka Anda dapat menggunakanpipmain()
seperti yang dihentikanpip.main()
lihat stackoverflow.com/questions/43398961/...Jika Anda ingin menggunakan
pip
untuk menginstal paket yang diperlukan dan mengimpornya setelah instalasi, Anda dapat menggunakan kode ini:Jika Anda menginstal paket sebagai pengguna, Anda dapat menemukan masalah yang tidak bisa Anda impor saja. Lihat Cara menyegarkan sys.path? untuk informasi tambahan.
sumber
imp.reload(site)
membuat sayaRuntimeError: dictionary changed size during iteration
pip uninstall <package_name>
. Saya masih dapat menghapus instalannyapip.main
tetapi hanya ingin tahu di mana ia menginstal paket?pip install requests[security]
:? Saya tidak yakin apakah itu akan mendefinisikan global dengan benar.pip.main
tidak lagi berfungsi. pip.pypa.io/en/latest/user_guide/#using-pip-from-your-programIni seharusnya bekerja:
sumber
[sys.executable, '-m', 'pip', 'install', name]
memastikan untuk mendapatkan pip "benar" di sini.Saya menambahkan beberapa pengecualian menangani jawaban @ Harun.
sumber
subprocess.call
sehingga kode mungkin gagal.Anda mendefinisikan modul dependen di dalam setup.py dari paket Anda sendiri dengan opsi "install_requires".
Jika paket Anda perlu membuat beberapa skrip konsol yang dihasilkan, maka Anda dapat menggunakan titik masuk "console_scripts" untuk menghasilkan skrip pembungkus yang akan ditempatkan dalam folder 'bin' (misalnya lingkungan virtualenv Anda).
sumber