Как свернуть мои собственные pypi?

Я хотел бы запустить собственный внутренний pypi-сервер для распределения яйца в моей организации.

Я нашел несколько проектов, например:

Как я понимаю, в pypi.python.org используется программное обеспечение под названием Cheese Shop.

Мои вопросы:

  • Почему я не могу использовать сам cheeseshop? (Я не могу найти его, не уверен, что он существует)
  • Как другие люди решают эту проблему? (В настоящее время мы используем blush svn для распределения яиц)

* edit: Это кажется каноническим http://wiki.python.org/moin/PyPiImplementations. Тем не менее, меня интересует обратная связь.

Ответ 1

Источник в 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]

Ответ 2

Для облегченного решения используйте pypiserver.

Ответ 3

Обновлено: crate.io отключился, и домен теперь совсем другой.

Один проект, который не упоминался, https://crate.io/, который кажется очень активным. Он утверждает, что является "индексом упаковки Python следующего поколения", но у них есть свои хранилища, которые хорошо разделяются на части, которые, похоже, приветствуют настройку и ремиксы в ваших целях.

Ответ 4

Существует вилка djangopypi с именем djangopypi2, которую вы можете получить из https://github.com/popen2/djangopypi2/, я ее установил и работает для меня, эта опция что я выбрал из списка из 24 альтернатив, которые я нашел в недавнем поиске, вы можете увидеть список здесь: http://uyeya.blogspot.com/2013/10/list-of-local-alternatives-of-pypi.html

Ответ 5

Warehouse

Warehouse будет вашим лучшим выбором в 2017 году. Из проекта README:

Склад - это хранилище пакетов Python следующего поколения, предназначенное для замены устаревшая база кода, которая в настоящее время включает PyPI

...

Вы можете запускать Warehouse локально с помощью docker и docker-compose. Видеть Начало работыв документации для инструкций по настройке.

Поддерживается Python Packaging Authority (PyPA), которые работают в сотрудничестве с членами основной команды разработки Python, и есть версия live, работающая на https://pypi.org/, которая отражает все в прежнем PyPI (https://pypi.python.org/).

Ответ 6

Если вам понадобится более легкое решение, а затем развертывание всего pypi-сервера, вы можете попробовать использовать индекс сервера, сгенерированный basketweaver.

Ответ 7

Еще один пропущенный из этого (старый) список:

djangopypi

Основанный на Django, который может быть небольшим излишеством, но я люблю django, и он очень просто модифицировать его в соответствии с вашими потребностями, если он не будет удовлетворительным.

Ответ 8

И исходный код ящика доступен, хотя документация, как минимум, может быть сказано, не существует:

Crate.Web

Это приложение Django, предоставляющее индекс пакетов Python. Использует пару других пакетов из https://github.com/crateio, чтобы вы могли развернуть свою версию без django.

Я специально задумываюсь о статическом, я всегда думал, что должен быть очень простой способ исследовать прямо некоторые [предварительно сконфигурированные] репозитории и магазин сыра непосредственно из моего публичного и частного репозиториев github/bitbucket, с просто простой (gunicorn) процесс.

Ответ 9

Я столкнулся с той же проблемой, и ClueReleaseManager решил проблему размещения внутреннего PyPI-сервера/настраиваемого репозитория Python для меня.

Это отвечает на второй вопрос, и я думаю, у вас уже есть ответ на вопрос.

Ответ 10

devpi

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