Как я могу настроить инструменты для установки пакета 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/"- путь к локальному клонированному разветвленному проекту. Затем вы можете контролировать, какую ветку и т.д. Детали на другом локальном клонированном разветвленном проекте независимо от этого проекта, просто работая над этим локальным проектом и этим локальным проектом.