我希望创建一个内部的pypi服务器,用于组织内部的egg分发。
我找到了一些项目,例如:
据我所知,pypi.python.org使用名为Cheese Shop的软件。
我的问题:
- 为什么我不能使用Cheese Shop本身?(我找不到它,也不确定它是否存在)
- 其他人是如何解决这个问题的?(目前我们使用 svn 分发 eggs)
*编辑:这似乎是权威的 http://wiki.python.org/moin/PyPiImplementations。不过,我还是想听取反馈意见。
我希望创建一个内部的pypi服务器,用于组织内部的egg分发。
我找到了一些项目,例如:
据我所知,pypi.python.org使用名为Cheese Shop的软件。
我的问题:
*编辑:这似乎是权威的 http://wiki.python.org/moin/PyPiImplementations。不过,我还是想听取反馈意见。
更新:现在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]
如果你在2017年寻找最好的Python包仓库,那么Warehouse是你最佳选择。根据该项目的README所述:
Warehouse是下一代Python包仓库,旨在取代当前支持PyPI的传统代码库。
...
你可以使用
docker
和docker-compose
在本地运行Warehouse。请参阅文档中的入门指南了解如何设置。
它由Python包装部(PyPA)维护,他们与Python核心开发团队成员合作,并且有一个实时版本正在运行https://pypi.org/,它镜像了传统PyPI (https://pypi.python.org/)的所有内容。
我们在企业环境中使用它,并且非常满意。它支持复制、私有索引和索引继承。
有一个名为djangopypi2的分支,它是djangopypi的变体,您可以从https://github.com/popen2/djangopypi2/获取。我已经安装并使用它,这是我在近期搜索到的24个替代方案中选择的选项之一。您可以在此处查看列表:http://uyeya.blogspot.com/2013/10/list-of-local-alternatives-of-pypi.html
更新:crate.io已经关闭,该域名现在完全变成了其他内容。
还没有提到的一个项目是https://crate.io/,它似乎非常活跃。它声称是“下一代Python包索引”,但他们将其存储库很好地分成了几个部分,似乎欢迎您根据自己的目的进行定制和混合使用。
而且创建源代码是可用的,尽管文档可以说是不存在的:
这是一个Django应用程序,提供Python软件包索引。使用https://github.com/crateio中的其他几个软件包,因此您可能可以在没有Django的情况下推出自己的版本。
我特别考虑了一个静态版本,我一直认为应该有一种非常简单的方法,可以直接浏览一些[预配置的]存储库,并直接从我的github / bitbucket公共和私人存储库购买奶酪,只需运行一个简单的(gunicorn)进程即可。