我该如何为Python Heroku项目安装内部需求?

9
我们有一些内部库已经拆分出来(主要是行政原因或为了方便以后易于开源)。它们存在私有 Github 存储库中,如果这很重要的话。
我想部署一个应用程序到 Heroku 上试试。它依赖其中一个库。
我应该在 requirements.txt 中指定我的依赖关系。对于 PyPI 可安装的东西很容易,但是对于这些内部依赖项应该怎么办?
我可以运行自己的私有 PyPI 镜像来处理这个问题,或者我可以使用可编辑的包(尽管文档说它们不应该在生产中使用)。
什么是适当的方法?
4个回答

7

GitHub允许在Git仓库上使用HTTP基本身份验证。

因此,您可以添加这样一行:

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

一切都将正常工作 :)


太棒了!但为什么Heroku说我们不应该在要求文件中使用-e呢?当您手动指定标签/版本(或者您有一个开发过程,这意味着主分支总是可以正常工作)时,我并没有看到问题。 - lvh
因为可编辑的需求有时会出现问题。这不是针对Heroku特定的情况 :) - Kenneth Reitz
4
我该如何做到这一点而不泄露我的密码? - wkschwartz
2
这似乎违反了通常的“不泄密”规则。 :) - Collin Anderson

1
requirements.txt 文件中,你可以像下面这样进行说明。

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

同时,您可以克隆该库并创建虚拟环境,在环境中安装。Heroku开发中心有包括虚拟环境设置在内的文章。


那对于私有仓库有什么帮助呢? - lvh
如果那不起作用,你可以在运行“scp”之后从源代码安装。 - Kracekumar

0

在你的 requirements.txt 文件中,你可以写成 "-e git+ssh://git@.../PIL#egg=PIL" 而不是 "PIL",这样它就会从那里获取。

然而,这将要求你以某种方式指定 ssh 私钥,以便 heroku 在拉取时使用。


0

有一个专门针对此问题的构建包: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”的依赖项了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接