Ketika saya melakukan "pip install -e ..." untuk menginstal dari git repo, saya harus menentukan # egg = somename atau keluhan pip. Sebagai contoh:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
Apa pentingnya string "telur" ini?
pip install
dokumentasi ini berbicara tentang#egg=name
, tetapi tidak memberikan jawaban yang jelas.Jawaban:
per pip install -h string "egg" adalah direktori yang diperiksa sebagai bagian dari instalasi
sumber
project-name.egg-info/top_level.txt
seharusnya sudah dibuat. Gunakan konten file ini sebagai nilaiegg
parameter.egg=...
pengaturan itu benar-benar penting. Paket yang saya instal memiliki banyak entri di file top_level.txt. Saya telah bereksperimen dengan mencocokkannya denganname
kwarg yang digunakan skripsetup.py
tetapi juga nilai sewenang-wenang. Hasilnya tampaknya sama. Perhatikan bahwa saya menginstal menggunakanpip install https://...
sintaks yang tidak memerlukan-e
.Anda harus menyertakan # egg = Package sehingga pip tahu apa yang diharapkan di URL itu. Lihat https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support
lebih lanjut tentang telur
sumber
pip install -h
,Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)
saya tidak yakin itu digunakan di tempat lain ...https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support mengatakan:
Dari sini saya menyimpulkan bahwa nilai telur hanya digunakan untuk pemeriksaan ketergantungan dan oleh karena itu saya pikir, menurut konvensi, nama paket (yaitu
some-pypi-package-name
) harus digunakan, bukan folder yang ada (yaitusome_pypi_package_name
)sumber
Telur hanyalah beberapa kode python yang dibundel . Di url git, telur adalah nama proyek. Dukungan VCS
Biasanya kami menginstal paket python dari Pypi, jadi Anda HANYA menentukan nama dan versi paket (atau menganggap versi terbaru jika Anda tidak menentukan). Pypi kemudian mencari telur mana yang Anda inginkan dan pip menginstalnya.
pip install celery
akan menginstal telur terbaru yang diterbitkan danpip install celery[redis]
akan menginstal telur berbeda yang berisi paket seledri yang sama dan juga menginstal telur terbaru dari paket apa pun yang terdaftar sebagai dependensi untuk redis di setup.py celery.Dengan jalur git dan gitlab, Anda dapat menentukannya
/{user|group}/{repository}.git@{tag}#egg={package-name}
. ada perbedaan antara#egg=celery
dan#egg=celery[redis]
, tetapi keduanya berasal dari kode sumber yang sama."tag" juga bisa menjadi cabang atau melakukan hash selain tag sebenarnya. Diasumsikan
master
jika Anda tidak menentukan.misalnya,
git+https://github.com/celery/celery.git#egg=celery==4.3.0
akan memeriksa cabang master dan menginstalnya. Meskipun Anda menentukan nomor versi, itu tidak diperhitungkan dalam instalasi. NOMOR VERSI DIABAIKANSaat menginstal melalui git atau url VCS lainnya, Anda akan ingin menemukan tag atau hash dari versi yang Anda butuhkan. Misalnya,
git+https://github.com/celery/[email protected]#egg=celery
yang akan memeriksa komit dengan tag "v4.3.0" dan kemudian menginstal paket dari kode sumber tersebut. Dengan asumsi pengelola tidak salah memberi tag pada repositori mereka, Anda bisa mendapatkan versi yang Anda inginkan seperti itu.sumber