2012-07-24 76 views
5

我使用this答案中描述的方法成功安装了numpy和scipy。然后我想补充起初我尝试添加scikit-learn==0.11到requirements.txt,当推到Heroku的我得到了一个错误信息scikit学习这样:如何在heroku雪松上安装scikit-learn?

ImportError: liblapack.so.3gf: cannot open shared object file: No such file or directory 

所以我加入到LD_LIBRARY_PATH在那里我有路径liblapack.so.3gf但后来我得到这个:

ImportError: libgfortran.so.3: cannot open shared object file: No such file or directory 

我相信Heroku上没有Fortran编译器,但也许我错了。我该如何解决这个问题?

回答

6

基于这些指针,我刚刚完成了关于heroku的scikit-learn的安装。我很高兴地看到,有没有必要让定制的二进制文件,但设置一些环境的伎俩:)

你可以在我的WYN的buildpack的叉的附加定义步骤: https://github.com/ToonTimbermont/heroku-buildpack-python

的关键是设置LD_LIBRARY_PATH适当的值: export LD_LIBRARY_PATH=$(pwd)/vendor/lib:$(pwd)/vendor/lib/atlas- base:$(pwd)/vendor/lib/atlas-base/atlas

我还添加这些路径来Heroku的配置: heroku config:add LD_LIBRARY_PATH=/app/.heroku/vendor/lib/atlas-base/atlas:/app/.heroku/vendor/lib/atlas-base:/app/.heroku/vendor/lib/

+0

干得好!这实际上是工作... – zenpoy 2013-01-27 14:13:36

+1

我移植并改进了对Heroku Buildpack当前版本的更改。你可以在这里找到它们https://github.com/dbrgn/heroku-buildpack-python-sklearn并在这里阅读它们http://blog.dbrgn.ch/2013/6/18/heroku-buildpack-numpy-scipy -scikit学习/。 – 2013-06-17 23:25:18

+0

近2年后为我工作!谢谢! – hobs 2014-12-14 07:03:19

1

您可能会将所需的所有库打包到应用程序本身中,但更优雅的解决方案是在git上克隆Heroku Python Buildpack,并对其进行修改以包含这些库。然后,您可以指示您的应用程序在命令行客户端上使用修改的buildpack和--buildpack标志。

编辑:我没有点击到最初的其他答案,但它听起来像你已经在使用自定义的buildpack。您使用的buildpack有各种custom steps,下载custom binaries。二进制文件是在64位Debian下编译的。

您应该能够剖析buildpack正在使用的其他自定义二进制文件之一,以找出您可以使用其中的--prefix并构建所需的额外库。这不是很容易或不方便,但它应该像numpy和scipy一样工作。

+0

我已经克隆了构建包。我如何安装sci ipy和颠簸。但是我如何获得scikit的编译库?我必须编译它们吗?在什么类型的机器上? – zenpoy 2012-07-24 18:17:06

+0

哦,我明白了!我的错。让我编辑更多细节的答案。 – 2012-07-24 18:47:18

3

另一个不错的选择是conda buildpack,它允许你通过Anaconda/Miniconda添加任何可用的免费Linux64包到Heroku应用程序。一些最受欢迎的软件包包括numpy,scipy,scikit-learn,statsmodels和pandas。虽然buildpack使得向应用添加软件包相当简单,但缺点是buildback占用大量空间,而且您必须等待Anaconda更新存储库中的库。

如果你开始在Heroku上一个新的Python应用程序,你可以使用命令添加畅达buildpack:

$ heroku create YOUR_APP_NAME --buildpack https://github.com/kennethreitz/conda-buildpack.git 

如果您已经安装在Heroku上一个Python应用程序,你可以畅达buildpack添加到使用现有应用程序的命令:

$ heroku config:add BUILDPACK_URL=https://github.com/kennethreitz/conda-buildpack.git 

或者,如果你需要按名称指定的应用程序:

$ heroku config:add BUILDPACK_URL=https://github.com/kennethreitz/conda-buildpack.git --app YOUR_APP_NAME 

要使用buildpack,您需要在app目录中包含两个文本文件:requirements.txt和conda-requirements.txt。就像标准Python buildpack一样,requirements.txt文件列出了应该使用pip安装的软件包。应使用conda安装的软件包列在conda-requirements.txt文件中。一些最有用的科学软件包包括numpy,scipy,scikit-learn,statsmodels,pandas和cvxopt。可用的conda软件包的完整列表可在repo.continuum.io找到。

例如:

$ cat requirements.txt 
gunicorn==0.14.2 
requests==0.11.1 

$ cat conda-requirements.txt 
scipy 
numpy 
cvxopt 

这就是它!您现在可以将Anaconda软件包添加到Heroku上的Python应用程序中。

+0

不幸的是,它的工作原理,但基础构建包太庞大,不能真正做很多...我甚至无法安装熊猫,因为conda默认包装类似Qt的东西(50兆!) – Chrismit 2015-05-22 18:18:31

-1

使用conda buildpack并将'nomkl'添加到conda-requirements.txt文件中以获取slugsize。