ติดตั้งคอมไพล์คอมมิตเฉพาะด้วย pip


172

ฉันกำลังพัฒนาแอพ django และฉันใช้ pip เพื่อจัดการความต้องการของฉัน ฉันจะติดตั้งคอมมิทเฉพาะของคอมมิทได้อย่างไร?

ในกรณีของฉันฉันต้องติดตั้งคอมมิทนี้: https://github.com/aladagemre/django-notification/commit/2927346f4c513a217ac8ad076e494dd1adbf70e1

คำตอบ:


281

คุณสามารถระบุการแฮช, ชื่อสาขา, แท็ก

สำหรับชื่อสาขาและแท็กคุณยังสามารถติดตั้งการกระจายแบบบีบอัดได้ สิ่งนี้เร็วกว่าและมีประสิทธิภาพมากกว่าเนื่องจากไม่จำเป็นต้องทำการโคลนพื้นที่เก็บข้อมูลทั้งหมด GitHub สร้างบันเดิลเหล่านั้นโดยอัตโนมัติ

กัญชา:

$ pip install git+git://github.com/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1

ชื่อสาขา

ด้วยคอมไพล์

$ pip install git+git://github.com/aladagemre/django-notification.git@cool-feature-branch

หรือจากบันเดิลต้นทาง

$ pip install https://github.com/aladagemre/django-notification/archive/cool-feature-branch.tar.gz

แท็ก

กับคอมไพล์

$ pip install git+git://github.com/aladagemre/django-notification.git@v2.1.0

หรือจากบันเดิลต้นทาง

$ pip install https://github.com/aladagemre/django-notification/archive/v2.1.0.tar.gz

มันเป็นคุณสมบัติที่ไม่ได้มีเอกสารครบถ้วน แต่คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่https://pip.pypa.io/en/latest/reference/pip_install.html#git


24
มันจะเพิ่มข้อความสนุกนี้:Could not find a tag or branch '2927346f4c513a217ac8ad076e494dd1adbf70e1', assuming commit.
vlad-ardelean

10
@ vlad-ardelean ความคิดใด ๆ เกี่ยวกับวิธีที่จะบอกว่ามันคือการกระทำ pip? นี่คือการส่งออกในสคริปต์การใช้งานของฉันและฉันไม่ต้องการที่จะปราบปราม stderr ทั้งหมด
Leonardo Arroyo

หากคุณไม่ได้ระบุอะไรพฤติกรรมคืออะไร?
Scott Stafford

@ScottStafford คุณไม่ควรมีสาขา / แท็กที่เรียกว่าข้อความยืนยัน นั่นคงจะแปลก ...
Martin Thoma

นอกจากนี้ผมจะพูดถึงรุ่น HTTPS ของคำสั่ง:git+ pip install git+https://github.com/gpoore/codebraid@011464539bfb09b8611c8aef0d543532cea958bfอาจเป็นสิ่งสำคัญสำหรับผู้ที่อยู่เบื้องหลังพร็อกซี http ขององค์กร
grwlf

19

ความคิดเห็นเพิ่มเติมเกี่ยวกับคำตอบของ @ hugo-tavares:

หากเป็นที่เก็บ GitHub ส่วนตัวคุณจะต้องใช้:

pip install git+ssh://git@github.com/....

ในกรณีของคุณ:

pip install git+ssh://git@github.com/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1

12

เป็นไปได้ที่จะติดตั้งแพ็กเกจหลามโดยอัตโนมัติโดยใช้ไฟล์ requirements.txt ในโปรเจคของคุณโดยเพิ่มบรรทัดต่อไปนี้:

-e git+https://github.com/owner/repository.git@branch_or_commit

และเรียกใช้บรรทัดคำสั่ง:

$ pip install -r requirements.txt


15
สำหรับฉัน (pip 9.0.1 ใน python3.5 virtualenv) มันใช้งานไม่ได้: pip install -r requirements.txtยก 'ไม่พบชื่อความต้องการโปรดระบุด้วย # egg =' แต่มันทำงานกับรูปแบบ '-e git + github.com/owner/repository.git#egg=branch_or_commit '
Edouard Berthe

คุณต้องใช้รูปแบบนี้ภายในไฟล์ requirements.txt คุณทำเช่นนั้น?
mannysz

ฉันทำให้มันทำงานได้ แต่มันไม่ชัดเจน ต้องมี "package_name -e ... " และไม่ใช่แค่ "-e ... " ที่จุดเริ่มต้นของบรรทัด
Udi

1

หากคุณต้องการสร้างแพ็คเกจไข่คุณยังสามารถใช้ส่วนต่อท้าย @branch_or_commit เดียวกันได้: pip install git+ssh://git@github.com/myrepo.git@mybranch#egg=myeggscript

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.