Saya memiliki repositori git dengan banyak folder, salah satunya adalah modul python yang dapat diinstal dengan pip, seperti ini:
repo.git/
repo.git/folder1/
repo.git/folder2/
repo.git/mymodule/
repo.git/mymodule/__init__.py
repo.git/mymodule/setup.py
repo.git/mymodule/...
Sekarang saya harus melakukan hal berikut untuk menginstal:
git clone http://server/repo.git
cd repo
pip install mymodule
cd ..
rm -rf repo
Apakah mungkin untuk menginstal modul secara langsung dengan pip tanpa kloning secara eksplisit?
Saya mencoba:
pip install git+https://server/repo.git/mymodule/
pip install git+https://server/repo.git:mymodule/
Tapi saya mendapatkan:
IOError: [Errno 2] No such file or directory: '/tmp/pip-88tlLm-build/setup.py'
Jawaban:
Ada permintaan tarik terkait fitur ini, dan tampaknya telah digabungkan untuk mengembangkan cabang sebulan yang lalu. Sintaksnya adalah sebagai berikut :
pip install -e git+https://git.repo/some_repo.git#egg=version_subpkg&subdirectory=repo # install a python package from a repo subdirectory
Kami mungkin harus menunggu beberapa saat hingga digabungkan menjadi master dan didistribusikan.
PEMBARUAN : Ini sekarang tersedia dan didokumentasikan di https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support sebagai berikut:
Catatan: Pada Windows, Anda harus menempatkan URL dalam tanda kutip ganda, atau Anda akan mendapatkan kesalahan "'subdirektori' tidak dikenali sebagai perintah internal atau eksternal". Misalnya, gunakan:
sumber
pip install -e 'git+https://…/repo.git@branch#egg=package&subdirectory=package'
menghasilkan paket yang tampak diinstal, danpackage.egg-link
file dimasukkan ke dalam paket situs - tetapi mengarah ke direktori rootsrc/repo
, bukan kesrc/repo/package
, seperti yang saya harapkan. Ini berartipy_modules
tidak dapat diimpor, danentry_points
tidak benar-benar berfungsi: keduanya menaikkan fileImportError: No module named package
.-e
tampaknya perlu, jikapip freeze
tidak, tidak menunjukkan seluruh jalur, hanya telurnya. Ini terjadi padapip-1.5.4
Ini sudah dinyatakan di salah satu komentar di bawah jawaban yang benar, tetapi hanya untuk menyoroti masalah ini: saat menjalankan ini dari baris perintah Linux, Anda harus keluar dari
&
-karakter karena ampersand memberi tahu baris perintah untuk menjalankan perintah di latar belakang:Perhatikan garis miring terbalik sebelum tanda ampersand. Perilaku melarikan diri mungkin bergantung pada distro Linux; Saya bukan seorang ahli.
Jika Anda mengabaikan ini, Anda mungkin mengalami kesalahan samar seperti berikut:
sumber
pip install git+ssh://[email protected]/org_or_username/repo.git@branch#subdirectory=path/to/dubdir