如何自建PyPI?例如,用于'egg'分发
我想在公司内部搭建一个自己的PyPI服务器,用来分发egg包。
我找到了一些相关的项目,比如:
据我了解,pypi.python.org使用的软件叫做Cheese Shop。
我有几个问题:
- 为什么我不能直接使用Cheese Shop?(我找不到这个东西,也不确定它是否存在)
- 其他人是怎么解决这个问题的?(目前我们用blush SVN来分发'egg包')
这看起来是个标准的做法:Python Wiki,Python实现。不过,我还是想听听大家的意见。
我该如何搭建自己的PyPI呢?
9 个回答
9
Warehouse
Warehouse 在2017年是个不错的选择。根据这个项目的说明:
Warehouse 是一个新一代的 Python 包存储库,旨在替代目前支持 PyPI 的旧代码。
...
你可以使用
docker
和docker-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]