- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们正在尝试提出一个解决方案,让 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 上不同版本的轮子?
最佳答案
AWS S3 可以用作 pypi 服务器,配置最少且没有其他附加依赖项。
假设您要使用存储桶 mypackages
来托管您的私有(private)包 - awesomepy
和 rattlesnake
。
在 S3 中创建存储桶后,转到其属性,单击静态网站托管 卡并启用选项使用此存储桶托管网站。记下单选按钮上方提到的端 pip 。
以下是您必须如何安排文件夹和文件 (docs):
mypackages
|
|---awesomepy
| |---awesomepy-1.10.0-py27-none-any.whl
| |---awesomepy-1.10.3-py27-none-any.whl
| |---index.html
|
|---rattlepy
|---rattlesnake-0.1.1-py27-none-any.whl
|---index.html
包文件夹中的 index.html
文件将包含如下内容
<html>
<head>
<title>Links</title>
</head>
<body>
<h1>Links</h1>
<a href='awesomepy-1.10.0-py27-none-any.whl'>awesomepy-1.10.0-py27-none-any.whl </a>
<br />
<a href='awesomepy-1.10.3-py27-none-any.whl'>awesomepy-1.10.3-py27-none-any.whl </a>
</body>
</html>
Wheel 包必须遵循正确的命名约定。引用PEP 427了解详情。对于虚拟包 - awesomepy-1.10.3-py27-none-any.whl
,我们假设,
py27
none
任何
最后,您可以使用以下命令安装软件包。确保您的包的名称与 pypi 包的名称不同。一个简单的解决方案是在包名称前加上您公司的首字母缩写。
pip install awesomepy rattlesnake==0.1.1 --extra-index-url=<s3 Endpoint> --trusted-host=<s3 Endpoint without http>
使用 pip install awesomepy --upgrade
升级包也适用于此方法。
此外,修改您的存储桶权限以将包限制为目标客户。一种方法是:
在存储桶中选择权限选项卡 --> 编辑 Bucket Policy
原始信用:我的前经理 Adlon :)
关于python - 如果我们想使用 S3 来托管 Python 包,我们如何告诉 pip 在哪里可以找到最新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36022867/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!