it-swarm.dev

Jak podać w pliku wymagania.txt bezpośrednie źródło github

Zainstalowałem bibliotekę za pomocą polecenia

pip install git+git://github.com/mozilla/elasticutils.git

który instaluje go bezpośrednio z repozytorium Github. Działa to dobrze i chcę mieć tę zależność w moim requirements.txt. Spojrzałem na inne bilety, takie jak this , ale to nie rozwiązało mojego problemu. Jeśli umieszczę coś takiego

-f git+git://github.com/mozilla/elasticutils.git
elasticutils==0.7.dev

w requirements.txt Plik a pip install -r requirements.txt powoduje następujące wyniki:

Downloading/unpacking elasticutils==0.7.dev (from -r requirements.txt (line 20))
  Could not find a version that satisfies the requirement elasticutils==0.7.dev (from -r requirements.txt (line 20)) (from versions: )
No distributions matching the version for elasticutils==0.7.dev (from -r requirements.txt (line 20))

dokumentacja pliku wymagań nie wspomina o linkach wykorzystujących git+git specyfikator protokołu, więc może to po prostu nie jest obsługiwane.

Czy ktoś ma rozwiązanie mojego problemu?

350
Alfe

składnia pakietów „edytowalnych” można używać w requirements.txt, aby zaimportować pakiety z różnych VCS (git, hg, bzr, svn) :

-e git://github.com/mozilla/elasticutils.git#Egg=elasticutils

Możliwe jest również wskazanie konkretnego zatwierdzenia:

-e git://github.com/mozilla/[email protected]#Egg=elasticutils
272
stalk

Zwykle twój requirements.txt plik wyglądałby mniej więcej tak:

package-one==1.9.4
package-two==3.7.1
package-three==1.0.1
...

Aby określić repozytorium Github, nie potrzebujesz package-name== Konwencja.

Poniższe przykłady aktualizują package-two przy użyciu repozytorium GitHub. Tekst między @ i # oznacza specyfikę pakietu.

Określ wartość skrótu zatwierdzenia (41b95ec w kontekście zaktualizowanego requirements.txt):

package-one==1.9.4
git+git://github.com/path/to/[email protected]#Egg=package-two
package-three==1.0.1

Podaj nazwę oddziału (master):

git+git://github.com/path/to/[email protected]#Egg=package-two

Określ tag (0.1):

git+git://github.com/path/to/[email protected]#Egg=package-two

Podaj wersję (3.7.1):

git+git://github.com/path/to/[email protected]/tag/v3.7.1#Egg=package-two

Pamiętaj, że #Egg=package-two nie jest tutaj komentarzem, ma jawnie podać nazwę pakiet

ten post na blog ma więcej dyskusji na ten temat.

283
YPCrumble

requirements.txt Pozwala na następujące sposoby określania zależności od pakietu w repozytorium git od pip 7.01

[-e] git+git://git.myproject.org/SomeProject#Egg=SomeProject
[-e] git+https://git.myproject.org/SomeProject#Egg=SomeProject
[-e] git+ssh://git.myproject.org/SomeProject#Egg=SomeProject
-e [email protected]:SomeProject#Egg=SomeProject

W przypadku Github oznacza to, że możesz to zrobić (zauważ pominięty -e):

git+git://github.com/mozilla/elasticutils.git#Egg=elasticutils

Dlaczego dodatkowa odpowiedź?
W innych odpowiedziach nieco się pomyliłem z powodu flagi -e, Więc oto moje wyjaśnienie:

Flaga -e Lub --editable Oznacza, że ​​pakiet jest zainstalowany w <venv path>/src/SomeProject, A zatem nie w głęboko zakopanym <venv path>/lib/pythonX.X/site-packages/SomeProject, W którym w przeciwnym razie zostałby umieszczony.2)

Dokumentacja

160
qff

Najpierw zainstaluj z git+git lub git+https, w jakikolwiek sposób wiesz. Przykład instalacji oddziału kronok projektu brabeion:

pip install -e git+https://github.com/kronok/[email protected]#Egg=brabeion

Po drugie, użyj pip freeze > requirements.txt, aby uzyskać właściwą rzecz w swoim requirements.txt. W takim przypadku otrzymasz

-e git+https://github.com/kronok/[email protected]#Egg=brabeion-master

Po trzecie, przetestuj wynik:

pip uninstall brabeion
pip install -r requirements.txt
73
osa

Ponieważ pip v1.5, (wydany 1 stycznia 2014 r .: DZIENNIK ZMIAN , PR ) możesz również określ podkatalog repozytorium git, aby zawierał twój moduł. Składnia wygląda następująco:

pip install -e git+https://git.repo/some_repo.git#Egg=my_subdir_pkg&subdirectory=my_subdir_pkg # install a python package from a repo subdirectory

Uwaga: Jako autor modułu pip, najlepiej byłoby, gdybyś mógł opublikować swój moduł we własnym repozytorium najwyższego poziomu. Jednak ta funkcja jest przydatna w przypadku niektórych wcześniejszych repozytoriów zawierających python w podkatalogach. Możesz być zmuszony do zainstalowania ich w ten sposób, jeśli nie zostaną one również opublikowane w pypi).

15
TrinitronX