如何自建PyPI?例如,用于'egg'分发

50 投票
9 回答
19885 浏览
提问于 2025-04-15 13:24

我想在公司内部搭建一个自己的PyPI服务器,用来分发egg包

我找到了一些相关的项目,比如:

据我了解,pypi.python.org使用的软件叫做Cheese Shop。

我有几个问题:

  1. 为什么我不能直接使用Cheese Shop?(我找不到这个东西,也不确定它是否存在)
  2. 其他人是怎么解决这个问题的?(目前我们用blush SVN来分发'egg包')

这看起来是个标准的做法:Python WikiPython实现。不过,我还是想听听大家的意见。

我该如何搭建自己的PyPI呢?

9 个回答

9

Warehouse

Warehouse 在2017年是个不错的选择。根据这个项目的说明:

Warehouse 是一个新一代的 Python 包存储库,旨在替代目前支持 PyPI 的旧代码。

...

你可以使用 dockerdocker-compose 在本地运行 Warehouse。关于如何设置它的详细步骤,请查看文档中的 入门指南

这个项目由 Python 包管理机构 (PyPA) 维护,他们与 Python 核心开发团队的成员合作。同时,https://pypi.org/ 上有一个实时版本,它与旧版 PyPI (https://pypi.python.org/) 的内容是一样的。

22

如果你想要一个轻量级的解决方案,可以使用 pypiserver

16

更新:现在PyPi是由Warehouse提供支持的,这个是Cheese Shop的替代品。

你可以从https://bitbucket.org/pypa/pypi/src下载Cheese Shop的源代码。你提到的页面上还有一个例子,展示了如何使用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]

撰写回答