Подтвердить что ты не робот

Как указать в requirements.txt прямой источник 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))

Документация файла требований не содержит ссылок с использованием спецификатора протокола git+git, поэтому, возможно, это просто не поддерживается.

У кого-нибудь есть решение для моей проблемы?

4b9b3361

Ответ 2

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 [email protected]:SomeProject#egg=SomeProject

Для Github это означает, что вы можете сделать (обратите внимание на пропущенный -e):

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

Почему дополнительный ответ?
Я несколько смутился флагом -e в других ответах, поэтому здесь мое разъяснение:

Флаг -e или --editable означает, что пакет установлен в <venv path>/src/SomeProject и, следовательно, не находится в глубоком погребении <venv path>/lib/pythonX.X/site-packages/SomeProject, иначе он был бы помещен. 2

Documentation

Ответ 3

Обычно ваш файл 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/[email protected]#egg=package-two
package-three==1.0.1

Укажите имя ветки (master):

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

Укажите тег (0.1):

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

Укажите освобождение (3.7.1):

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

Обратите внимание, что #egg=package-two здесь не является комментарием, это означает явно указать имя пакета

В этом сообщении в блоге есть еще несколько дискуссий по этой теме.

Ответ 4

Сначала установите с помощью git+git. Пример установки ветки kronok проекта brabeion:

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

Во-вторых, используйте pip freeze > requirements.txt, чтобы получить правильное решение в requirements.txt. В этом случае вы получите

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

В-третьих, проверьте результат:

pip uninstall brabeion
pip install -r requirements.txt

Ответ 5

Так как pip v1.5, (выпущен 1 января 2014 года: CHANGELOG, 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.