Как я могу сделать setuptools установить пакет, который не на PyPI?
Я только начал работать с setuptools и virtualenv. Мой пакет требует новейшего python-gearman, который доступен только от GitHub. Версия python-gearman, которая на PyPI является старой. Источник Github является setuptools-совместимым, т.е. Имеет setup.py и т.д. Есть ли способ заставить setuptools загружать и устанавливать новую версию вместо того, чтобы искать ее на PyPI и устанавливать старый?
FYI, новый python-gearman http://github.com/mtai/python-gearman
Ответы
Ответ 1
Ключ должен сообщить 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-адреса в ваш файл dependency_links, например:
setup(
...
dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta']
)
Теперь, когда ваш пакет будет установлен, easy_install обнаружит, что есть доступный для загрузки с этого URL-адрес "gearman 2.0.0beta" и с радостью подбирает его над PyPI, если вы укажете "gearman >= 2.0.0beta" в ваших зависимостях.
(Как правило, такой способ заключается в том, чтобы включить ссылку на одну страницу PyPI в загружаемый источник, в этом случае, если автор пакета gearman включил ссылку, как показано выше, вы Как правило, люди отмечают версию разработки с помощью "myproject-dev", а затем люди используют требование "myproject >= somever, == dev", так что если нет пакета somever или выше, easy_install попытается проверить или загрузить выпуск.)
При использовании pip
вам нужно указать --process-dependency-links
. Обратите внимание, что обработка ссылок зависимостей устарела и будет удалена в будущей версии.
Ответ 2
Вы можете использовать формат pip install protocol+location[@tag][#egg=Dependency]
для установки непосредственно из источника с помощью pip.
Git
pip install git+https://github.com/username/repo.git
pip install git+https://github.com/username/[email protected]
pip install git+https://github.com/username/[email protected]#egg=ProjectName
Mercurial
pip install hg+https://hg.myproject.org/MyProject/
SVN
pip install svn+svn://svn.myproject.org/svn/MyProject
Bzr
pip install bzr+http://bzr.myproject.org/MyProject/trunk
Поддерживаются следующие протоколы: [+git, +svn, +hg, +bzr]
Версия
@tag
позволяет указать конкретную версию/тег для проверки.
#egg=name
позволяет указать, какой проект является зависимостью для других.
Порядок всегда должен быть @tag#egg=name
.
Частные репозитории
Вы также можете установить из частных репозиториев, изменив протокол на SSH (ssh://
) и добавив соответствующего пользователя ([email protected]
):
git+ssh://[email protected]/username/my_private_repo
Вы также можете установить из частных репозиториев с именем пользователя/паролем.
git+https://<username>:<password>@github.com/<user>/<repo>.git
Github предоставляет возможность создавать личные токены OAuth, которые могут быть циклически
git+https://<oauth token>:[email protected]/<user>/<repo>.git
requirements.txt
requirements.txt
используется для указания зависимостей проекта:
requirements.txt
package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git
Они не установлены автоматически с пакетом и должны быть установлены с помощью команды pip -r requirements.txt
.
Включая файлы требований
Файлы требований могут содержать другие файлы требований:
требования-Docs.txt
sphinx
-r requirements-dev.txt
требования-dev.txt
some-dev-tool
-r requirements.txt
requirements.txt
package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git
setup.py
Файлы требований могут устанавливать зависимости, указанные в setup.py
, с помощью следующей команды:
-e .
setup.py
также может устанавливаться из репозиториев, используя тот же синтаксис, что и выше, но используя значение dependency_links
, как указано в этом ответе.
Литература:
https://pip.pypa.io/en/latest/user_guide.html#installing-packages
https://pip.pypa.io/en/latest/reference/pip_install.html
Ответ 3
Vanilla setuptools
не поддерживает загрузку непосредственно из репозитория git, но вы можете использовать одну из ссылок Скачать исходный на этой странице, например:
easy_install http://github.com/mtai/python-gearman/tarball/master