Рубрики
Без рубрики

Как использовать GitHub в качестве Pypi Server

Автор оригинала: cedd burge.

Я искал размещенного частного пакета Python Python Python, который использовал учетные данные, которые команда уже имеет (например, github).

Я не хотел создавать локарный сервер. Для нас это сделало бы невозможным использование облачных серверов сборки, и это другая движущаяся часть, которая может пойти не так. Существуют также потенциальные проблемы с мелкозернистой безопасностью и скоростью. (У нас есть во всем мире команда, поэтому обслуживающая контент через CDN будет полезен.)

Я не хотел заставлять команду создавать учетные записи с другим провайдером. У них уже есть активный каталог и учетные записи GitHub. Это раздражение для них и создает нагрузку на управление для меня.

К сожалению, я не мог найти такой сервис. Гемфури отлично, но не поддерживает авторизацию GitHub (на уровне команды/организации) и Packagr Не поддерживает авторизацию GitHub вообще. Myget Также отлично, он позволяет мне использовать авторизацию GitHub, но не принимает пакеты Python. Azure DevOps имеет то, что выглядит многообещающе, но это в Частная бета в данный момент.

Счастливо, это возможно, используя репозитории облачных Git, такие как GitHub, Gitlab и Bitbucket.

PIP может устанавливать пакеты из Git

Я принимал пакет Python на Github ( python_world ), который вы можете установить со следующей командой (убедитесь, что доверяете мне, прежде чем запустить эту команду и установить мой код на свой компьютер).

Установка PIP

PIP предоставляет варианты установки из головы, из ветви, из тега или из фиксации. Я обычно тегаю каждый выпуск и устанавливаю из этих тегов. Увидеть PIP Установка документации для полной информации Отказ

Этот репозиторий является общественным, но он работает так же с частным репо, до тех пор, пока у вас есть разрешение. Нет особой магии (это пакет Vanilla Python) и Setup.py делает большую часть работы как обычно.

Если вы новичок для создания пакетов Python, Упаковка Python Project Project стоит быстро читать.

SetUpeWools также могут устанавливать зависимости от Git

SetUpeWools Как большинство людей создают пакеты Python.

Я принимал еще один пакет на Github Python_Hello , что зависит от python_world Отказ (Я уверен, что вы можете увидеть, где это происходит.)

Соответствующие биты от Setup.py ниже. install_requires Указывает, что python_world Требуемая зависимость и говорит SetUptools, где его найти.

install_requires=[
	'python_world@git+https://github.com/ceddlyburge/python_world#egg=python_world-0.0.1',
]

Вы можете установить этот пакет, используя команду ниже. Это также скажет зависимый python_world упаковка.

Установка PIP

Это ссылки на конкретную версию python_world , который является позором, так как это означает, что PIP не может выполнять управление зависимостями (например, разработка приемлемой версии, если на нем зависит несколько вещей). Однако к концу этой статьи мы сделаем потребность в конкретной ссылке.

Среда Python

Как и все, кто использовал Python без среды, знает, среда экономит много разочарования и впустую время. Поэтому нам нужно поддерживать тех.

Я создал репо ( Использование – Hello-World ), который определяет Python_Hello как зависимость в требования .txt для Виртуальский и окружающая среда для Кондей Отказ

Если вы загружаете REPO, вы можете установить зависимости в VirtualenV со следующей командой.

PIP Установка -R требования.

Если вы используете CONDA, вы можете использовать эту команду:

CONDA ENV CREATEL -N USION-HELLO-WORL

Pypi Index.

До сих пор мы можем установить пакеты из наших личных репозиторий Git. Эти пакеты могут, в свою очередь, определяют зависимости к другим частным репозиториям. Там еще не видны Pypi Server.

Мы могли бы остановиться в этот момент. Однако синтаксис для определения зависимостей немного загадочно. Для команды было бы трудно обнаружить, какие пакеты доступны, и мы связываемся с конкретными версиями зависимых пакетов, вместо того, чтобы позволить пипугированию.

Чтобы исправить это, мы можем настроить индекс PYPI, который соответствует PEP 503 Отказ Эта спецификация довольно проста, и я только что создал индекс вручную. Если это становится слишком громоздким, я могу генерировать его с API GitHUB.

Я создал это Индекс PYPI Использование страниц GitHub. Есть эквивалентные вещи для Gitlab и Bitbucket. Вы можете увидеть, что Исходный код очень просто Сайты GitHub Pages всегда публикиваются (и в вашем индексе, вероятно, нет конфиденциальной информации). Однако, если вам нужно, чтобы они были частными, вы можете использовать такие услуги, как PeadyHub Отказ

Одна вещь, чтобы посмотреть на это Имя Нормализация спецификации. Это требует Python_Hello Информация о пакете, которая должна присутствовать в Python-Hello/index.html (Обратите внимание на изменение от подчеркивания на тире).

Теперь, когда у нас есть сервер Pypi, мы можем установить пакеты, используя команду ниже.

PIP Установка Python_Hello – Extra-index-url https://ceddlyburge.github.io/python-package-server/

Так что вы можете увидеть эту работу с средами, я создал еще один репо ( use_hello_world_from_server ), который определяет Python_Hello Зависимость с использованием этого индекса PYPI вместо прямых ссылок GitHub. Если вы пытаетесь его с кондиционером, версия> 4.4 требуется.

На данный момент мы можем вернуться и удалить прямую GIT Link в install_requires в setup.py of python_hello (Поскольку STYUPTOULS смогут найти его с нашего сервера).

Выводы

Использование поставщика GIT облачного размещения в качестве Pypi Server – это жизнеспособный вариант. Если вы уже используете один, это означает, что вы можете повторно использовать учетные данные и разрешения, которые у вас уже есть. Он будет работать с облачными серверами сборки и, вероятно, будет предоставлен через CDN, поэтому будет быстрым по всему миру. Это требует больше знаний, чтобы настроить, чем размещенный сервер, но, вероятно, то же самое или меньше, чем проведение собственного сервера в помещениях.

Советы и подсказки

Сервировка индекса локально может помочь устранить проблемы (например, нормализация имени). Легко видеть, какие запросы сделаны. Вы можете использовать Inbuilt Python HTTP-сервер для этого ( Python -M http.server -8000 ). Это привело меня, чтобы узнать, что Поиск PIP использует пост Запросы, поэтому не будет работать с страницами GitHub.

Вы можете запустить python setup.py -install Чтобы проверить свои пакеты PIP локально, прежде чем нажать их в Git.