【发布时间】:2015-10-25 19:56:05
【问题描述】:
我有两个 python 项目,它们共享一些公共库,它们都组织成三个 git 存储库:project1、project2 和 common-lib。这两个项目都打算部署到与 common-lib 捆绑在一起的弹性 beanstalk。
我正在尝试找到最惯用的方式来构建这些项目,以便轻松地在本地进行开发,并使用eb deploy 构建一个用于部署的 zip 文件。
为本地开发设置一切都很容易。只需签出每个 repo 并在 common-lib 中执行 python setup.py develop 以使公共库在 virtualenv 中可用。
对于 EB 部署,最好有一个 setup.py 命令生成一个 EB compatible zip file,其中包含项目和 common-lib 以及一个列出两者的 pip 依赖项的 requirements.txt 文件。我还没有找到一种简单的方法来做到这一点,这有点令人惊讶,因为我想这是一个相当普遍的情况。
我无法在 project1 或 project2 的 requirements.txt 文件中为 common-lib 指定 git 存储库,因为无法从 AWS 访问该存储库。
【问题讨论】:
-
@eddie 您对此有何解决方案?我不确定,但我可能会遇到同样的问题。我的 requirements.txt 列出了我所有的第三方依赖项,但不包括我自己开发的项目。所以我遇到了一个 DistributionNotFound 错误,其中引用的发行版是 MyApp(也就是我写的应用程序)。您的解决方案是使用 @smentek 提供的解决方案通过 AWS 访问私有存储库吗?
-
不要这样做。但是,我将 (Windows) 连接或将我的常用包硬链接到多个不同的包中。拉取后为开发人员设置很痛苦,但与 git 和 EBS 配合得很好。
-
不确定您使用的是哪种 eb,但为什么不使用 docker 容器?只需让您的 DockerFile 执行您设置环境的操作即可?
标签: python amazon-web-services amazon-elastic-beanstalk