【问题标题】:How do I install in-house requirements for Python Heroku projects?如何为 Python Heroku 项目安装内部需求?
【发布时间】:2012-02-02 13:02:41
【问题描述】:

我们已经拆分了一些内部库(出于多种原因,主要是管理或以后有可能轻松开源它们)。如果这很重要,它们将存在于私有 Github 存储库中。

我想在 Heroku 上部署一个应用来试用一下。这取决于其中一个库。

我应该在 requirements.txt 中指定我的依赖项。对于 PyPI 可安装的东西来说这很容易,但我该怎么处理这些内部依赖项?

我可以运行我自己的包含这些东西的私有 PyPI 镜像,或者我可以使用可编辑的包(即使文档说它们不应该在生产中使用)。

什么是合适的方法?

【问题讨论】:

    标签: python heroku pip


    【解决方案1】:

    GitHub 允许在 Git 存储库上进行 HTTP Basic 身份验证。

    所以,你可以像这样添加一行:

    -e git+https://username:password@github.com/kennethreitz/requests.git@v0.10.0#egg=requests
    

    一切都会正常工作:)

    【讨论】:

    • 太棒了!为什么 Heroku 说你的需求文件中不应该有 -e 呢?当您手动指定标签/发布时,我看不到问题(或者您有一个意味着 master 总是好的开发过程)。
    • 因为可编辑需求有时会中断。不是 Heroku 特有的 :)
    • 但是如何在不提交密码的情况下执行此操作?
    • 这似乎违反了通常的“不提交秘密”规则。 :)
    【解决方案2】:

    在requirements.txt 中,您可以像下面这样提及。

    git+git://github.com/kracekumar/blaze.git

    同时,您可以克隆库并创建虚拟环境并安装在 env 中。 Heroku dev center 有文章,包括虚拟环境设置。

    【讨论】:

    • 这对私人回购有什么帮助?
    • 如果不行,你可以在运行scp后从源代码安装。
    【解决方案3】:

    你可以在你的 requirements.txt 文件中写,比如说,“-e git+ssh://git@.../PIL#egg=PIL”而不是“PIL”,它会从那里获取它。

    但是,这需要您以某种方式指定 Heroku 在拉取时使用的 ssh 私钥。

    【讨论】:

      【解决方案4】:

      为此有一个构建包:https://elements.heroku.com/buildpacks/debitoor/ssh-private-key-buildpack

      这样做:

      $ heroku buildpacks:set --index 1 https://github.com/debitoor/ssh-private-key-buildpack.git
      $ heroku buildpacks:add heroku/python
      $ heroku config:set SSH_KEY="$(cat path/to/your/keys/id_rsa | base64)"
      

      现在将给定的 ssh 密钥添加到 github,您可以在部署到 Heroku 时使用那些“git+git@github.com”依赖项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-28
        • 2021-03-04
        相关资源
        最近更新 更多