【问题标题】:Deploying Python and Dependencies to Elastic Beanstalk将 Python 和依赖项部署到 Elastic Beanstalk
【发布时间】: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 访问该存储库。

【问题讨论】:

  • 所以让它可以访问:stackoverflow.com/questions/34727442/…
  • @eddie 您对此有何解决方案?我不确定,但我可能会遇到同样的问题。我的 requirements.txt 列出了我所有的第三方依赖项,但不包括我自己开发的项目。所以我遇到了一个 DistributionNotFound 错误,其中引用的发行版是 MyApp(也就是我写的应用程序)。您的解决方案是使用 @smentek 提供的解决方案通过 AWS 访问私有存储库吗?
  • 不要这样做。但是,我将 (Windows) 连接或将我的常用包硬链接到多个不同的包中。拉取后为开发人员设置很痛苦,但与 git 和 EBS 配合得很好。
  • 不确定您使用的是哪种 eb,但为什么不使用 docker 容器?只需让您的 DockerFile 执行您设置环境的操作即可?

标签: python amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

对我来说,正确的方法是从公共库创建一个 python 包,将其发布到私有 pypi 服务器,如https://gemfury.com/l/pypi-server。将其作为 python 包在 requirements.txt 中作为参考。

另一种解决方案是将 common-lib 包含为 git 子模块 https://git-scm.com/docs/git-submodule。这样您就可以进行分离了,因为它将存在于一个单独的存储库中,并且您将在您的项目中作为 git 子模块获得一个简单的引用。

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 2016-04-16
    • 2015-09-18
    • 2020-03-24
    • 2021-04-22
    • 2014-10-11
    • 2017-01-07
    • 2020-10-11
    • 2020-01-29
    相关资源
    最近更新 更多