Как создать свой собственный pypi?
Вопрос
Я хотел бы запустить свой собственный внутренний сервер pypi для распространения egg в моей организации.
Я нашел несколько проектов, таких как:
Насколько я понимаю, pypi.python.org использует программное обеспечение под названием Cheese Shop.
Мои вопросы:
- Почему я не могу использовать сам cheeseshop?(Я не могу его найти, не уверен, что он существует)
- Как другие люди решают эту проблему?(В настоящее время мы используем покраснеть svn для раздачи яиц)
*редактировать:Это кажется каноническим http://wiki .python.org/moin/PyPiImplementations.Тем не менее, я заинтересован в обратной связи.
Решение
Исходный код для Cheese Shop можно загрузить с https://bitbucket.org/pypa/pypi/src.На странице, на которую вы ссылаетесь, также есть пример использования Apache в качестве "тупого" репозитория пакетов Python:
# Mount pypi repositories into URI space
Alias /pypi /var/pypi
# /pypi/dev: Redirect for unknown packages (fallback to pypi)
RewriteCond /var/pypi/dev/$1 !-d
RewriteCond /var/pypi/dev/$1 !-f
RewriteRule ^/pypi/dev/([^/]+)/?$ http://pypi.python.org/pypi/$1/ [R,L]
RewriteCond /var/pypi/dev/$1/$2 !-f
RewriteRule ^/pypi/dev/([^/]+)/([^/]+)$ http://pypi.python.org/pypi/$1/$2 [R,L]
# /pypi/stable: Redirect for unknown packages (fallback to pypi)
RewriteCond /var/pypi/stable/$1 !-d
RewriteCond /var/pypi/stable/$1 !-f
RewriteRule ^/pypi/stable/([^/]+)/?$ http://pypi.python.org/pypi/$1/ [R,L]
RewriteCond /var/pypi/stable/$1/$2 !-f
RewriteRule ^/pypi/stable/([^/]+)/([^/]+)$ http://pypi.python.org/pypi/$1/$2 [R,L]
Другие советы
Для легкого решения используйте сервер pypiserver.
Склад
Склад это был бы ваш лучший выбор в 2017 году.Из README проекта:
Warehouse - это репозиторий пакетов Python следующего поколения, предназначенный для замены устаревшей базы кода, которая в настоящее время поддерживает PyPI ( ПиПИ )
...
Вы можете запустить Хранилище локально, используя
docker
иdocker-compose
.Видишь Приступая к работе инструкции о том, как его настроить, приведены в документации.
Он поддерживается Управление по упаковке Python (PyPA) которые работают в сотрудничестве с членами основной команды разработчиков Python, и есть живая версия, работающая на https://pypi.org/ который отражает все в устаревшем PyPI (https://pypi.python.org/).
Существует форк djangopypi с именем djangopypi2, вы можете получить его из https://github.com/popen2/djangopypi2/, Я установил его и работает у меня, этот вариант - это то, что я выбрал из списка примерно из 24 альтернатив, которые я нашел в недавнем поиске, вы можете посмотреть список здесь: http://uyeya.blogspot.com/2013/10/list-of-local-alternatives-of-pypi.html
девпи
Мы используем его в корпоративной среде и вполне удовлетворены.Он поддерживает репликацию, частные индексы и наследование индексов.
Обновленный:ящик.ввод-вывод завершен, и домен теперь представляет собой нечто совершенно другое.
Один проект, который не был упомянут, это https://crate.io/, который кажется очень активным.Он утверждает, что является "Индексом упаковки Python следующего поколения", но их репозитории красиво разбиты на части, которые, похоже, приветствуют настройку и ремикширование для ваших целей.
Если вам нужно более легкое решение, чем развертывание всего сервера pypi, вы могли бы попробовать использовать индекс сервера, сгенерированный плетущая корзины.
Еще один пропавший без вести в этом (устаревшем) списке:
джангопипи
Основан на Django, что может быть небольшим излишеством, но я люблю django, и это позволяет чрезвычайно просто модифицировать его в соответствии с вашими потребностями, если он вас не удовлетворяет.
И исходный код crate доступен, хотя документация, по крайней мере, это можно сказать, не существует:
Это приложение Django, предоставляющее индекс пакета Python.Использует пару других пакетов из https://github.com/crateio таким образом, вы могли бы выпустить свою собственную версию без django.
Я конкретно думаю о статическом, я всегда думал, что должен быть очень простой способ напрямую исследовать некоторые [предварительно настроенные] репозитории и покупать сыр непосредственно из моих публичных и частных репозиториев github / bitbucket, запустив всего лишь простой процесс (gunicorn).
Я столкнулся с той же проблемой, и ClueReleaseManager - Менеджер ключей решил проблему размещения внутреннего сервера PyPI / пользовательского репозитория Python для меня.
Это ответ на второй вопрос, и я думаю, у вас уже есть ответ на первый.