Как я могу сделать setuptools установить пакет, который не находится на PyPI?


Я только начал работать с setuptools и virtualenv. Для моего пакета требуется последний python-gearman, который доступен только из GitHub. Версия python-gearman, которая находится на PyPI, является старой. Источник GitHub-это setuptools-совместимыми, т. е. setup.py и т. д. Есть ли способ сделать setuptools загрузить и установить новую версию вместо того, чтобы искать ее на PyPI и устанавливать старую?

напомним, что новый питон-gearman-это http://github.com/mtai/python-gearman

3 122

3 ответа:

ключ должен сказать easy_install, где пакет может быть загружен. В данном конкретном случае его можно найти по url 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 обнаружит, что есть" gearman 2.0.0 beta", доступный для загрузки с этого URL-адреса, и с радостью выберет его над одним из PyPI, если вы укажете" gearman>=2.0.0 beta " в своих зависимостях..

(обычно, как это делается, чтобы включить ссылку на одна страница PyPI для загружаемого источника; в этом случае, если бы автор пакета gearman включил ссылку, подобную приведенной выше, вы бы уже были установлены. Как правило, люди отмечают версию разработки с помощью "myproject-dev", а затем люди используют требование "myproject>=somever,==dev", так что если нет пакета somever или выше, easy_install попытается проверить или загрузить выпуск.)

вам нужно будет указать --process-dependency-links при использовании pip. Обратите внимание, что зависимость обработка ссылок была устаревшей и будет удалена в будущем выпуске.

вы можете использовать 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/repo.git@MyTag
pip install git+https://github.com/username/repo.git@MyTag#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://) и добавление соответствующего пользователя (git@):

git+ssh://git@github.com/username/my_private_repo

вы также можете установить из частных репозиториев с именем пользователя / паролем.

git+https://<username>:<password>@github.com/<user>/<repo>.git

Github предоставляет возможность создавать личные токены OAuth что может быть на велосипеде

git+https://<oauth token>:x-oauth-basic@github.com/<user>/<repo>.git

требований.txt

requirements.txt используется для указания зависимостей проекта:

требований.txt

package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git

они не устанавливаются автоматически вместе с пакетом и должны быть установлены с помощью команды pip -r requirements.txt.

файлы, в том числе требованиям

файлы требований могут включать в себя другие требования файлы:

требования-документы.txt

sphinx
-r requirements-dev.txt

требования-dev.txt

some-dev-tool
-r requirements.txt

требований.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

ванилин setuptools не поддерживает загрузку непосредственно из репозитория git, но вы можете использовать один из Скачать Источник ссылки с этой страницы, как:

easy_install http://github.com/mtai/python-gearman/tarball/master