Как изложить в требованиях.тхт прямой источник на 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 тоже.