การกำหนดค่าเพื่อให้การติดตั้ง pip สามารถทำงานได้จาก github


226

เราต้องการใช้ pip กับ github เพื่อติดตั้งแพ็คเกจส่วนตัวไปยังเซิร์ฟเวอร์ที่ใช้งานจริงของเรา คำถามนี้เกี่ยวกับสิ่งที่ต้องอยู่ใน repo GitHub เพื่อให้การติดตั้งประสบความสำเร็จ

สมมติบรรทัดคำสั่งต่อไปนี้ (ซึ่งรับรองความถูกต้องและพยายามติดตั้ง):

pip install git+ssh://git@github.com/BlahCo/search/tree/prod_release_branch/ProductName

ต้องมีอะไรอยู่ใน ProductName เป็นเนื้อหาของสิ่งที่ปกติจะอยู่ในไฟล์ tar หลังจากรัน setup.py ด้วยตัวเลือก sdist หรือเป็นไฟล์ tar.gz จริงหรืออย่างอื่นหรือไม่

ฉันถามที่นี่เพราะฉันได้ลองหลายรูปแบบและไม่สามารถใช้งานได้ ความช่วยเหลือใด ๆ ชื่นชม

คำตอบ:


290

คุณต้องใช้แพ็คเกจงูใหญ่ทั้งหมดพร้อมsetup.pyไฟล์ในนั้น

แพคเกจชื่อfooจะเป็น:

foo # the installable package
├── foo
   ├── __init__.py
   └── bar.py
└── setup.py

และติดตั้งจาก GitHub เช่น:

$ pip install git+https://github.com/myuser/foo.git@v123
or
$ pip install git+https://github.com/myuser/foo.git@newbranch

ข้อมูลเพิ่มเติมที่https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support


3
ผลงานดังกล่าวข้างต้นขอบคุณมาก แต่ถ้าฉันมีการวางจำหน่ายในเขตย่อยภายใน repo ดังนั้นแทนที่จะ foo.git ฉันกำลังมองหา foo / release / ProductVer เป็นไปได้และถ้าเป็นเช่นนั้นได้อย่างไร ขอบคุณมากสำหรับความช่วยเหลือ!
ccgillett

4
ไม่เป็นไปไม่ได้ pip ติดตั้งจากไดเรกทอรีที่เก็บ root อย่างน้อย git ไม่ทราบว่าพฤติกรรมการล้มล้าง ...
ฮิวโก้ทาวาเรส

3
หากคุณต้องการทำสิ่งนี้ผ่าน ssh และ repos ส่วนตัวนี่คือโพสต์เกี่ยวกับวิธีการทำเช่นนั้น
Jonathan

ทำไมถึงไม่ผ่าน-eตัวเลือก (โหมดแก้ไขได้) ไปยัง pip
Amelio Vazquez-Reina

14
นี่คือรูปแบบ URL ใหม่: pip install git+https://github.com/pypa/pip.git ที่มา: pip Github repo
aboutaaron

111

ฉันมีปัญหาที่คล้ายกันเมื่อฉันต้องติดตั้งจาก repo github แต่ไม่ต้องการติดตั้ง git ฯลฯ

วิธีง่าย ๆ ในการใช้คือ zip zip ของแพ็คเกจ เพิ่ม/zipball/masterใน repo URL:

    $ pip install https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Downloading/unpacking https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
  Downloading master
  Running setup.py egg_info for package from https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Installing collected packages: django-debug-toolbar-mongo
  Running setup.py install for django-debug-toolbar-mongo
Successfully installed django-debug-toolbar-mongo
Cleaning up...

วิธีนี้จะทำให้ pip ทำงานร่วมกับแหล่งเก็บข้อมูล github


2
นี่เป็นคำตอบเดียวที่ยังใช้งานได้กับ Windows
divenex

สิ่งนี้สามารถทำได้กับที่เก็บส่วนตัว? (ตามคำถามที่ถาม)
Rodrigo E. Principe

29

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

สำหรับการติดตั้งปกติ:

git+git://github.com/celery/django-celery.git

สำหรับการติดตั้ง " แก้ไขได้ ":

-e git://github.com/celery/django-celery.git#egg=django-celery

โหมดที่แก้ไขได้จะดาวน์โหลดซอร์สโค้ดของโครงการไปยัง./srcในไดเรกทอรีปัจจุบัน จะช่วยให้pip freezeการส่งออกตำแหน่ง GitHub ที่ถูกต้องของแพคเกจ


3
ชื่อไข่นั้นมาจากไหน มันล้มเหลวในการโหลดแพคเกจใน django หลังจากเปลี่ยนแพคเกจ pip ด้วย github repo
holms

@holms ชื่อค้นหาใน setup.py
wieczorek1990

อะไรนะ#egg=django-celery? นั่นคือตัวยึดตำแหน่งหรือไม่?
Enchance

@enchance มันเป็นชื่อแพ็คเกจ
wieczorek1990

13

โคลนที่เก็บเป้าหมายเป้าหมายเช่นเดียวกับที่คุณโคลนโครงการอื่น ๆ :

git clone git@github.com:myuser/foo.git

จากนั้นติดตั้งในโหมดพัฒนา:

cd foo
pip install -e .

คุณสามารถเปลี่ยนแปลงอะไรก็ได้ที่คุณไม่ต้องการและทุกรหัสที่ใช้fooแพ็คเกจจะใช้รหัสที่แก้ไขแล้ว

มีประโยชน์ 2 ประการในการแก้ปัญหานี้:

  1. คุณสามารถติดตั้งแพคเกจในไดเรกทอรีโครงการบ้านของคุณ
  2. แพคเกจรวมถึง.gitdir ดังนั้นจึงเป็นที่เก็บ Git ปกติ คุณสามารถผลักไปทางแยกของคุณได้ทันที

2
ฉันเป็นพยานได้ว่าวิธีนี้เป็นสิ่งมหัศจรรย์ ในกรณีของผมผมอยากจะสับบนpipดังนั้นฉันโคลนpipพื้นที่เก็บข้อมูลที่สร้างขึ้น virtualenv pip install -e .ที่เปิดใช้งานและทำ จากนั้นpipใน virtualenv อยู่ในโหมดการพัฒนา! ฉันประทับใจว่ามันใช้ได้แม้กับตัวจัดการแพคเกจเอง
Radon Rosborough

มันเยี่ยมมาก! ฉันสังเกตเห็นว่าเมื่อฉันติดตั้งโดยใช้วิธีนี้แล้วเรียกใช้pip listแพคเกจที่มีปัญหาอ้างอิงถึงสาขา Git และเส้นทางสัมบูรณ์ที่ติดตั้ง มันเก็บการอ้างอิงใด ๆ กับสิ่งเหล่านั้นหรือสามารถลบแหล่งที่มาได้หรือไม่?
MadPhysicist

0

คุณสามารถลองด้วยวิธีนี้ใน Colab

!git clone https://github.com/UKPLab/sentence-transformers.git
!pip install -e /content/sentence-transformers
import sentence_transformers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.