Как изложить в требованиях.тхт прямой источник на GitHub
Я установил библиотеку с помощью команды
pip install git+git://github.com/mozilla/elasticutils.git
который устанавливает его непосредственно из репозитория Github. Это прекрасно работает, и я хочу иметь эту зависимость в моем requirements.txt. Я посмотрел на другие билеты, как этой но это не решает мою проблему. Если я поставлю что-то вроде
-f git+git://github.com/mozilla/elasticutils.git
elasticutils==0.7.dev
на requirements.txt файл, a pip install -r requirements.txt приводит к следующему результату:
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))
The документация по требованиям файл не упоминает ссылки с помощью git+git спецификатор протокола, так что, возможно, это просто не поддерживается.
есть ли у кого-нибудь решение моей проблемы?
5 ответов:
"редактировать" пакеты синтаксис можно использовать в
requirements.txtдля импорта пакетов из различных VCS (git, hg, bzr, svn):-e git://github.com/mozilla/elasticutils.git#egg=elasticutilsкроме того, можно указать на конкретный коммит:
-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#egg=elasticutils
обычно
requirements.txtфайл будет выглядеть примерно так:package-one==1.9.4 package-two==3.7.1 package-three==1.0.1 ...чтобы указать репозиторий Github, вам не нужно
package-name==конвенции.приведенные ниже примеры обновления
package-twoиспользование репозитория GitHub. Текст между@и#обозначает специфику пакета.укажите хэш фиксации (
41b95ecв контексте модернизацииrequirements.txt):package-one==1.9.4 git+git://github.com/path/to/package-two@41b95ec#egg=package-two package-three==1.0.1укажите название филиала (
master):git+git://github.com/path/to/package-two@master#egg=package-twoуказать тег (
0.1):git+git://github.com/path/to/package-two@0.1#egg=package-twoуказать релиз (
3.7.1):git+git://github.com/path/to/package-two@releases/tag/v3.7.1#egg=package-twoотметим, что
#egg=package-twoэто не комментарий, это явно Укажите имя пакетаэтот блог есть еще несколько дискуссий на эту тему.
requirements.txtпозволяет использовать следующие способы указания зависимости от пакета в репозитории git по состоянию на 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 git+git@git.myproject.org:SomeProject#egg=SomeProjectдля Github это означает, что вы можете сделать (обратите внимание на опущенные
-e):git+git://github.com/mozilla/elasticutils.git#egg=elasticutilsпочему дополнительный ответ?
Я был несколько смущен-eфлаг в других ответах так вот мое разъяснение:The
-eили--editableфлаг означает, что пакет установлен в<venv path>/src/SomeProjectи при этом не в глубоко закопанном<venv path>/lib/pythonX.X/site-packages/SomeProjectв противном случае он был бы помещен.2документация
во-первых, установить с
git+git. Пример установки на :pip install -e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeionво-вторых, используйте
pip freeze > requirements.txtчтобы получить правильную вещь в вашемrequirements.txt. В этом случае, вы получите-e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion-masterв-третьих, проверить результат:
pip uninstall brabeion pip install -r requirements.txt
Так как Пип
v1.5, (выпущен 1 января 2014:список изменений, PR) вы также можете указать подкаталог репозитория git, который будет содержать ваш модуль. Синтаксис выглядит так: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Примечание: как автор модуля pip, в идеале вы, вероятно, захотите опубликовать свой модуль в своем собственном РЕПО верхнего уровня, если сможете. Тем не менее, эта функция полезна для некоторых уже существующих репозиториев, которые содержат модули python в подкаталогах. Вы можете быть вынуждены установить их таким образом если они не опубликованы в pypi тоже.