【发布时间】:2016-07-01 13:50:30
【问题描述】:
我们正在尝试提出一种解决方案,让 AWS S3 托管和分发我们的 Python 包。
基本上我们想要做的是使用python3 setup.py bdist_wheel 来创建一个轮子。将其上传到 S3。然后任何服务器或任何机器都可以pip install $http://path/on/s3。 (包括 AWS lambda 中的 virtualenv)
(我们研究了 Pypicloud 并认为这是一种矫枉过正。)
从 S3 创建包和安装工作正常。这里只有一个问题:我们将发布新代码并赋予它们不同的版本。如果我们将代码托管在 Pypi 上,您可以通过调用 pip install package --upgrade 将一些包升级到最新版本。
但是如果你在 S3 上托管你的包,你如何让 pip 知道有一个更新的版本存在?你如何通过简单地给 pip 版本号来回滚到旧版本?有没有办法让 pip 知道在哪里可以找到 S3 上不同版本的轮子?
【问题讨论】:
-
您需要查看 Python 打包用户指南中的 Hosting your Own Simple Repository 文档和
pip's--index-url/--extra-index-url参数。 -
如果您不必弄清楚这些东西,真的是大材小用吗?不使用别人已经构建的软件来做你想做的事,你真正获得了什么?少一台服务器或服务来管理?除非您目前没有服务器并希望保持这种状态(这听起来不切实际)或者您的包上传/下载将是一个巨大的负载,我不明白为什么这很重要。与尝试自己动手相比,仅使用它可能会花费更少的时间。
-
@jpmc26 现在我们只有 1 个要以这种方式分发的包。另外 Pypicloud 似乎还不支持 Python 3。我们所有的代码都在 Python 3 中。
-
@jpmc26 我知道发生了什么。我使用 pypicloud doc 中的“python3 setup.py bdist_wheel upload -r pypicloud”来构建源代码分发。我真正应该做的是“python3 setup.py bdist_wheel upload -r pypicloud”来构建一个wheel文件然后上传。它有效。
-
@LukasGraf 评论的更新链接:Hosting your own Simple Repository