Saya baru saja mulai bekerja dengan setuptools dan virtualenv. Paket saya membutuhkan python-gearman terbaru yang hanya tersedia dari GitHub. Versi python-gearman yang ada di PyPI adalah versi lama. Sumber Github kompatibel dengan setuptools, yaitu memiliki setup.py, dll. Apakah ada cara untuk membuat setuptools mengunduh dan menginstal versi baru alih-alih mencarinya di PyPI dan menginstal yang lama?
FYI, python-gearman baru adalah http://github.com/mtai/python-gearman
python
setuptools
distutils
pypi
andrei
sumber
sumber
python setup.py install
di direktori sumber?easy_install
ataupip
menginstalnya langsung dari Github. Tetapi ada juga solusi lain, sudahkah Anda mempertimbangkan untuk menambahkan paket ke PyPI?buildout
? Ini memiliki beberapa plugin Git yang sudah jadi.Jawaban:
Kuncinya adalah memberi tahu easy_install di mana paket itu dapat diunduh. Dalam kasus khusus ini, dapat ditemukan di url http://github.com/mtai/python-gearman/tarball/master . Namun, tautan itu sendiri tidak akan berfungsi, karena easy_install tidak dapat memberi tahu hanya dengan melihat URL apa yang akan didapat.
Dengan mengubahnya ke http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta sebagai gantinya, easy_install akan dapat mengidentifikasi nama paket dan versinya.
Langkah terakhir adalah menambahkan URL ke dependency_links paket Anda, misalnya:
Sekarang, ketika paket ANDA sedang diinstal, easy_install akan menemukan bahwa ada "gearman 2.0.0beta" yang tersedia untuk diunduh dari URL itu, dan dengan senang hati mengambilnya dari yang ada di PyPI, jika Anda menentukan "gearman> = 2.0.0beta" dalam dependensi Anda ..
(Biasanya, cara hal semacam ini dilakukan adalah dengan memasukkan tautan pada halaman PyPI seseorang ke sumber yang dapat diunduh; dalam hal ini, jika pembuat paket gearman menyertakan tautan seperti di atas, Anda akan sudah menyetel Biasanya, orang menandai versi pengembangan dengan 'myproject-dev' dan kemudian orang menggunakan persyaratan 'myproject> = somever, == dev', sehingga jika tidak ada paket yang lebih tinggi, easy_install akan mencoba untuk lihat atau unduh rilisnya.)
Anda harus menentukan
--process-dependency-links
saat menggunakanpip
. Perhatikan bahwa pemrosesan tautan ketergantungan telah usang dan akan dihapus dalam rilis yang akan datang.sumber
beta
akhiran pada versi yang ada pada PyPI, masih akan menginstal paket dari PyPI bukan yang didefinisikan dalamdependency_links
. Jika Anda mencoba mengatur versi yang lebih tinggi dari yang ada di PyPI#egg=package-version
, alat penyetelan akan mengeluh denganCould not find a version that satisfies the requirement
kesalahan dan daftar semua versi yang tersedia di PyPI. Perhatikan bahwa saya mencoba membangun paket sayasdist
, lalu memasangnyapip install http://url/to/my/generated/tar
.easy_install http://url/to/my/generated/tar
, semuanya berfungsi seperti yang diharapkan ... Tahu kenapa?--process-dependency-links
telah dihapus padapip
19! Lihat: github.com/pypa/pip/issues/6162Anda dapat menggunakan
pip install protocol+location[@tag][#egg=Dependency]
format untuk menginstal langsung dari sumber menggunakan pip.Git
Lincah
SVN
Bzr
Protokol berikut didukung:
[+git, +svn, +hg, +bzr]
Versi
@tag
memungkinkan Anda menentukan versi / tag tertentu untuk diperiksa.#egg=name
memungkinkan Anda menentukan apa proyek itu sebagai ketergantungan bagi orang lain.Urutannya harus selalu
@tag#egg=name
.Repositori Pribadi
Anda juga dapat menginstal dari repositori pribadi dengan mengubah protokol ke SSH (
ssh://
) dan menambahkan pengguna yang sesuai (git@
):Anda juga dapat menginstal dari repositori pribadi dengan nama pengguna / kata sandi.
Github menyediakan kemampuan untuk membuat token OAuth pribadi yang dapat didaur ulang
requirement.txt
requirements.txt
digunakan untuk menentukan dependensi proyek:requirement.txt
Ini tidak diinstal secara otomatis dengan paket dan harus diinstal dengan perintah
pip -r requirements.txt
.Termasuk file persyaratan
File persyaratan dapat termasuk file persyaratan lain:
persyaratan-docs.txt
persyaratan-dev.txt
requirement.txt
setup.py
File persyaratan dapat menginstal dependensi yang ditentukan
setup.py
dengan perintah berikut:setup.py
juga dapat menginstal dari repositori menggunakan sintaksis yang sama seperti di atas, tetapi menggunakandependency_links
nilai seperti yang disebutkan dalam jawaban ini .Referensi:
https://pip.pypa.io/en/latest/user_guide.html#installing-packages https://pip.pypa.io/en/latest/reference/pip_install.html
sumber
extras_require={'all': [repo @ git+https://github.com/username/repo.git]}
Seperti yang saya hanya harus melakukan hal yang sama, saya menemukan cara lain untuk melakukan hal ini sebagai
pip
's--process-dependency-links
dijadwalkan untuk dihapus dipip
19,0 menurut komentar ini .pip
18.1 termasuk fitur berikutDari uraian PEP 508, sintaks untuk dependensi URL tersebut terlihat seperti:
Jadi di dalam kamu
setup.py
akan terlihat sepertiPerhatikan, tautannya adalah file arsip dan juga bisa berupa rilis atau cabang tertentu dari repositori seperti yang dijelaskan dalam jawaban ini . Juga, lihat jawaban itu untuk bekerja dengan host repositori lainnya.
Sepengetahuan saya, cara termudah untuk memperbarui dependensi adalah dengan menggunakan
pip install -I .
ketika menginstal paket Anda dari direktori.sumber
pip install
mendukung, seperti URL git,#subdirectory=...
dll? Atau apakah mereka menghasilkan sintaks baru dengan fitur berbeda yang diekspos dengan cara yang berbeda dan tidak kompatibel?distutils.core.setup
danpip 19.1.1
requirements.txt
, bagaimanapun, tidak kompatibel denganpip install -r requirments.txt
requirments.txt
Anda maksud?Vanilla
setuptools
tidak mendukung pengunduhan langsung dari repositori git tetapi Anda dapat menggunakan salah satu tautan Sumber Unduh dari halaman itu, seperti:sumber
pip
ataubuildout
yang memiliki manajemen persyaratan yang lebih canggih. Lihat, misalnya: pip.openplans.org/#requirements-files