Я только начал работать с setuptools и virtualenv. Для моего пакета требуется последняя версия python-gearman, доступная только на GitHub. Версия python-gearman, находящаяся на PyPI, старая. Исходный код Github совместим с setuptools, то есть имеет setup.py и т. Д. Есть ли способ заставить setuptools загрузить и установить новую версию вместо того, чтобы искать ее в PyPI и устанавливать старую?
К вашему сведению, новый питон-снайпер http://github.com/mtai/python-gearman
python
setuptools
distutils
pypi
андрей
источник
источник
python setup.py install
в каталоге с исходным кодом?easy_install
илиpip
установить его прямо с Github. Но есть и другое решение: рассматривали ли вы возможность добавления пакета в PyPI?buildout
? У него есть пара готовых плагинов Git.Ответы:
Ключ должен сказать easy_install, где пакет может быть загружен. В данном конкретном случае его можно найти по адресу http://github.com/mtai/python-gearman/tarball/master . Однако эта ссылка сама по себе не сработает, потому что easy_install не может сказать, просто посмотрев на URL, что она собирается получить.
Вместо этого, изменив его на http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta , easy_install сможет определить имя пакета и его версию.
Последний шаг заключается в добавлении URL-адреса в зависимости вашего пакета, например:
Теперь, когда ВАШ пакет устанавливается, easy_install обнаружит, что есть «gearman 2.0.0beta», доступный для загрузки по этому URL, и с радостью выберет его поверх того, что есть в PyPI, если вы укажете «gearman> = 2.0.0beta» в ваших зависимостях ..
(Обычно способ такого рода действия заключается в том, чтобы включить ссылку на странице PyPI на загружаемый источник; в этом случае, если автор пакета gearman включил ссылку, подобную приведенной выше, вы уже настроены Как правило, люди помечают версию для разработки как «myproject-dev», а затем люди используют требование «myproject> = somever, == dev», так что, если пакет не имеет чего-либо или выше, easy_install попытается проверить или скачать релиз.)
Вам нужно будет указать
--process-dependency-links
при использованииpip
. Обратите внимание, что обработка ссылок зависимостей устарела и будет удалена в следующем выпуске.источник
beta
суффиксом в существующей версии PyPI, он все равно будет устанавливать пакет из PyPI вместо того, который определен вdependency_links
. Если вы попытаетесь установить более высокую версию, чем#egg=package-version
та, которая существует в PyPI , инструмент установки выдаст сообщениеCould not find a version that satisfies the requirement
об ошибке и список всех версий, доступных в PyPI. Обратите внимание, что я пытаюсь собрать свой пакет с помощьюsdist
, а затем установить его с помощьюpip install http://url/to/my/generated/tar
.easy_install http://url/to/my/generated/tar
, все работает как ожидалось ... Есть идеи, почему?--process-dependency-links
был удален сpip
19! См. Github.com/pypa/pip/issues/6162Вы можете использовать
pip install protocol+location[@tag][#egg=Dependency]
формат для установки напрямую из исходного кода с помощью pip.Гит
ртутный
SVN
Bzr
Поддерживаются следующие протоколы:
[+git, +svn, +hg, +bzr]
Версии
@tag
позволяет указать конкретную версию / тег для проверки.#egg=name
позволяет указать, что проект является зависимостью для других.Порядок должен быть всегда
@tag#egg=name
.Частные хранилища
Вы также можете установить из частных репозиториев, изменив протокол на SSH (
ssh://
) и добавив соответствующего пользователя (git@
):Вы также можете установить из частных репозиториев с именем пользователя / паролем.
Github предоставляет возможность создавать персональные токены OAuth, которые можно циклически повторять.
requirements.txt
requirements.txt
используется для указания зависимостей проекта:requirements.txt
Они не устанавливаются автоматически с пакетом и должны быть установлены с помощью команды
pip -r requirements.txt
.Включая файлы требований
Файлы требований могут включать другие файлы требований:
Требования-Docs.txt
Требования-dev.txt
requirements.txt
setup.py
Файлы требований могут устанавливать зависимости, указанные в
setup.py
следующей команде:setup.py
Можно также установить из репозиториев, используя тот же синтаксис, что и выше, но используяdependency_links
значение, указанное в этом ответе .Ссылки:
https://pip.pypa.io/en/latest/user_guide.html#install-packages https://pip.pypa.io/en/latest/reference/pip_install.html
источник
extras_require={'all': [repo @ git+https://github.com/username/repo.git]}
Как я должен был сделать то же самое, я нашел еще один способ сделать это как
pip
«s--process-dependency-links
планируется снять вpip
19,0 в соответствии с этим комментарием .pip
18.1 включает в себя следующую функциюИз описания PEP 508 синтаксис для таких зависимостей URL выглядит следующим образом:
Так по вашему
setup.py
это будет выглядетьОбратите внимание, что ссылка представляет собой архивный файл и может также представлять собой конкретный выпуск или ветвь репозитория, как описано в этом ответе . Также посмотрите этот ответ для работы с другими хостами репозитория.
Насколько мне известно, самый простой способ обновить зависимость - это использовать
pip install -I .
при установке вашего пакета из его каталога.источник
pip install
Поддерживает ли это также все, что поддерживает, например, git-URL и#subdirectory=...
т. Д.? Или они придумали новый синтаксис с различными функциями, представленными другим и несовместимым способом?distutils.core.setup
иpip 19.1.1
requirements.txt
, однако, не совместим сpip install -r requirments.txt
requirments.txt
ты говоришь?Vanilla
setuptools
не поддерживает загрузку напрямую из репозитория git, но вы можете использовать одну из ссылок на источник загрузки с этой страницы, например:источник
pip
илиbuildout
с более сложным управлением требованиями. См., Например: pip.openplans.org/#requirements-files