【问题标题】:How to roll my own pypi?如何滚动我自己的pypi?
【发布时间】:2010-11-17 03:29:56
【问题描述】:

我想运行我自己的内部 pypi 服务器,以便在我的组织内分发鸡蛋。

我找到了几个项目,比如:

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

我的问题:

  1. 为什么我不能使用 cheeseshop 本身? (我找不到,不确定是否存在)
  2. 其他人如何解决这个问题? (目前我们使用blush svn来分发鸡蛋)

*edit:这似乎是规范的http://wiki.python.org/moin/PyPiImplementations。不过,我对反馈很感兴趣。

【问题讨论】:

标签: python pypi


【解决方案1】:

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

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]

【讨论】:

  • 在调查了所有可用选项后,我对其中任何一个都不满意。然而,apache 解决方案是最简单的,也是我最终使用的解决方案,即使它远非理想。
【解决方案2】:

devpi

我们在企业环境中使用它并且非常满意。它支持复制、私有索引和索引继承。

【讨论】:

  • 你们如何向 devpi 添加更多包?
  • 界面和pypi一样。您可以使用 twine 上传包。不过,需要在 devpi 服务器中启用一些访问设置。
【解决方案3】:

Warehouse

Warehouse 将是您在 2017 年的最佳选择。来自项目的自述文件:

Warehouse 是下一代 Python 包存储库,旨在取代 当前支持 PyPI 的遗留代码库

...

您可以使用 dockerdocker-compose 在本地运行 Warehouse。看 Getting started 在文档中获取有关如何设置的说明。

它由与 Python 核心开发团队成员合作的The Python Packaging Authority (PyPA) 维护,在https://pypi.org/ 运行有一个实时版本,它反映了遗留 PyPI 中的所有内容(@ 987654327@).

【讨论】:

  • 我启动了一个小型 EC2 实例,用作 15GB 硬盘的 pypi 服务器。仓库所需的所有容器都不适合该驱动器!
【解决方案4】:

更新:crate.io 已关闭,该域现在完全不同了。

没有提到的一个项目是https://crate.io/,看起来很活跃。它声称是“下一代 Python 打包索引”,但它们的存储库很好地拆分成似乎欢迎定制和重新混合以满足您的目的的部分。

【讨论】:

  • 看起来 crate.io 域现在已被重新利用?
  • 现在林死了:p
  • @Mark 认为我找到了 GitHub,至少:github.com/crateio/crate.io。被Warehouse取代,根据Reddit
  • 此项目不再处于积极开发阶段。
【解决方案5】:

我遇到了同样的问题,ClueReleaseManager 为我解决了托管内部 PyPI 服务器/自定义 Python 存储库的问题。

这回答了问题二,我猜你已经有了问题一的答案。

【讨论】:

    【解决方案6】:

    有一个名为 djangopypi2 的 djangopypi 分支,您可以从 https://github.com/popen2/djangopypi2/ 获得它,我安装了它并为我工作,这个选项是我从最近搜索中找到的大约 24 个替代选项列表中选择的,您可以在此处查看列表:http://uyeya.blogspot.com/2013/10/list-of-local-alternatives-of-pypi.html

    【讨论】:

      【解决方案7】:

      并且 crate 源代码是可用的,尽管文档至少可以说是不存在的:

      Crate.Web

      这是一个提供 Python 包索引的 Django 应用程序。使用来自https://github.com/crateio 的其他几个包,因此您可以在没有 django 的情况下推出自己的版本。

      我特别考虑静态的,我一直认为应该有一种非常简单的方法可以直接从我的 github/bitbucket 公共和私人存储库中直接探索一些 [预配置] 存储库并购买奶酪,只需一个简单的(gunicorn)进程正在运行。

      【讨论】:

      • 抱歉,只是注意到@tilgovi 的回答还谈到了 crate 源存储库,而不仅仅是crate.io 的实时服务,尽管这是答案中链接的那个。
      【解决方案8】:

      这个(旧的)列表中缺少另一个:

      djangopypi

      基于 Django,这可能有点矫枉过正,但我​​喜欢 django,如果不满意,它可以非常简单地根据您的需要进行修改。

      【讨论】:

        【解决方案9】:

        对于轻量级解决方案,请使用pypiserver

        【讨论】:

          【解决方案10】:

          如果您想要一个更轻量级的解决方案然后部署整个 pypi 服务器,您可以尝试使用由basketweaver 生成的服务器索引。

          【讨论】:

          • 需要注意的是,BasketWeaver 对轮子一无所知,并且它的最新版本是在 2009 年!
          猜你喜欢
          • 1970-01-01
          • 2016-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-26
          • 1970-01-01
          相关资源
          最近更新 更多