Jak określić wymagania.txt a direct github source

Zainstalowałem bibliotekę używając polecenia

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

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

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

W pliku requirements.txt, a pip install -r requirements.txt daje następujące wyjście:

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 wymienia linków używających protokołu git+git konkretniej, więc może to po prostu nie jest obsługiwane.

Czy ktoś ma rozwiązanie mojego problemu?
Author: Community, 2013-05-16

5 answers

"edytowalna" składnia pakietów może być używana w {[2] } do importowania pakietów z różnych systemów VCS (git, hg, bzr, svn):

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

Można również wskazać konkretny commit:

-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#egg=elasticutils
 218
Author: stalk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-06 22:15:13

Normalnie 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ć repo Github, nie potrzebujesz package-name== konwencji.

Poniższe przykłady aktualizują package-two za pomocą repo GitHub. Tekst pomiędzy @ i # oznacza specyfikę pakietu.

Określ commit hash (41b95ec W kontekście aktualizacji requirements.txt):

package-one==1.9.4
git+git://github.com/path/to/package-two@41b95ec#egg=package-two
package-three==1.0.1

Podaj nazwę gałęzi (master):

git+git://github.com/path/to/package-two@master#egg=package-two

Określ tag (0.1):

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

Określ zwolnienie (3.7.1):

git+git://github.com/path/to/package-two@releases/tag/v3.7.1#egg=package-two

Zauważ, że #egg=package-two nie jest tutaj komentarzem, jest to jawnie podać nazwę pakietu

Ten post na blogu ma więcej dyskusji na ten temat.

 161
Author: YPCrumble,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-15 18:14:41

requirements.txt pozwala na następujące sposoby określenia zależności od pakietu w repozytorium git od pip 7.0:1

[-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

Dla Githuba oznacza to, że możesz to zrobić (zwróć uwagę na pominięte -e):

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

Skąd ta dodatkowa odpowiedź?
W innych odpowiedziach trochę pogmatwała mnie flaga -e, więc oto moje wyjaśnienie:

Znacznik -e lub --editable oznacza, że pakiet jest zainstalowany w <venv path>/src/SomeProject, a więc nie w głęboko Zakopanym <venv path>/lib/pythonX.X/site-packages/SomeProject, w przeciwnym razie być umieszczone w.2

Dokumentacja

 137
Author: qff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-29 20:01:56

Najpierw zainstaluj za pomocą git+git. Przykład instalacji gałęzi kronok projektubrabeion:

pip install -e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion

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

-e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion-master

Po Trzecie, sprawdź wynik:

pip uninstall brabeion
pip install -r requirements.txt
 70
Author: osa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-09 00:07:54

Od pip v1.5, (wydany 1 stycznia 2014: CHANGELOG, PR ) Możesz również określić podkatalog repo git, który będzie zawierał Twój moduł. Składnia wygląda tak:

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 opublikować swój moduł w jego własnym repo najwyższego poziomu, jeśli możesz. Jednak ta funkcja jest pomocna dla niektórych istniejących repozytoriów, które zawierają moduły Pythona w podkatalogach. Możesz być zmuszony do zainstalowania ich w ten sposób, jeśli nie zostaną opublikowane pypi też.

 14
Author: TrinitronX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-03 07:09:14