Как я могу настроить инструменты для установки пакета PyPI с разветвленной версией github?
Вот пример сценария.
Существует пакет python not-mine
, и я только что нашел небольшую ошибку. Я нахожу исходный код в github и fork в репозитории. Я вношу необходимые изменения и отправляю запрос на вытягивание. К сожалению, автор пакета находится в отпуске, и у меня есть крайний срок.
Мне нужен способ установить мой разветвленный репозиторий, а не версию автора, живущую на PyPI. Я пробовал следующее без успеха:
install_requires = [
'not-mine==1.0.0'
],
dependency_links = [
'http://github.com/my-username/not-mine/tarball/master#egg=not-mine-1.0.0'
]
Что мне не хватает?
Ресурсы, на которые я наткнулся, исследуя проблему:
Как заставить setuptools установить пакет, который не находится в PyPI?
Ответы
Ответ 1
Вы можете указать pip
по URL-адресу вашего разветвленного репо с вашим исправлением, потому что pip
может установить непосредственно из git repos.
$ pip install git+git://github.com/my-username/not-mine#egg=not-mine
Вы можете изменить команду pip install
, чтобы указать конкретную фиксацию, ветвь, тег и т.д. символом "@" перед "#".
$ pip install git+git://github.com/my-username/[email protected]_branch#egg=not-mine
Ответ 2
Если вы просто хотите установить разветвленный пакет forked в своей системе, вы можете просто клонировать пакет в свою систему и использовать команду python setup.py install
для локального размещения этого пакета в вашей системе.
Если вам нужно развернуть приложение со своим измененным пакетом, я рекомендую вам использовать виртуальную среду python
Ответ 3
Вы можете разветкить проект и локально клонировать его в вашу систему. Затем обратитесь к этой локальной вилке следующим образом:
pip install -e ~/Repositories/some_local_fork_repo_path/
Где ~ ~/Repositories/some_local_fork_repo_path/"- путь к локальному клонированному разветвленному проекту. Затем вы можете контролировать, какую ветку и т.д. Детали на другом локальном клонированном разветвленном проекте независимо от этого проекта, просто работая над этим локальным проектом и этим локальным проектом.