6

この回答で説明されている方法を使用して、numpyとscipyを正常にインストールしました。次に、scikit-learnを追加したかったので、最初にscikit-learn==0.11requirements.txtに追加しようとしましたが、herokuにプッシュすると、エラーメッセージが表示されました。

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コンパイラがないと思いますが、間違っているかもしれません。どうすればこれを解決できますか?

4

6 に答える 6

7

これらのポインタに基づいて、herokuへのscikit-learnのインストールが完了しました。カスタムバイナリを取得する必要がないことを確認して非常にうれしく思いましたが、一部の環境を設定することでうまくいきました:)

追加のカスタムステップは、wynのビルドパックの私のフォークにあります: 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

また、これらのパスをherokuconfigに追加しました。 heroku config:add LD_LIBRARY_PATH=/app/.heroku/vendor/lib/atlas-base/atlas:/app/.heroku/vendor/lib/atlas-base:/app/.heroku/vendor/lib/

于 2013-01-24T14:50:43.600 に答える
4

もう1つの優れたオプションは、condaビルドパックです。これを使用すると、Anaconda/Minicondaから入手できる無料のLinux64パッケージをHerokuアプリに追加できます。最も人気のあるパッケージには、numpy、scipy、scikit-learn、statsmodels、pandasなどがあります。ビルドパックを使用すると、アプリにパッケージを追加するのがかなり簡単になりますが、欠点は、ビルドバックが多くのスペースを占有し、Anacondaがリポジトリ内のライブラリを更新するのを待つ必要があることです。

Herokuで新しいPythonアプリを起動する場合は、次のコマンドを使用してcondaビルドパックを追加できます。

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

HerokuでPythonアプリを既にセットアップしている場合は、次のコマンドを使用して、condaビルドパックを既存のアプリに追加できます。

$ 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

ビルドパックを使用するには、アプリディレクトリにrequirements.txtとconda-requirements.txtの2つのテキストファイルを含める必要があります。標準のPythonビルドパックと同様に、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

それでおしまい!これで、HerokuのPythonアプリにAnacondaパッケージを追加できます。

于 2015-01-27T02:34:39.343 に答える
1

必要なすべてのライブラリをアプリケーション自体にパッケージ化できる場合もありますが、より洗練された解決策は、 GitでHeroku Python Buildpackのクローンを作成し、ライブラリを含めるように変更することです。--buildpack次に、コマンドラインクライアントのフラグを使用して変更したビルドパックを使用するようにアプリに指示できます。

編集:私は元々他の答えをクリックしませんでしたが、あなたはすでにカスタムビルドパックを使用しているようです。使用しているビルドパックには、カスタムバイナリをダウンロードするさまざまなカスタムステップがあります。バイナリは64ビットDebianでコンパイルされます。

ビルドパックが使用している他のカスタムバイナリの1つを分析して、使用できるライブラリを見つけ--prefix./configure必要な追加のライブラリをビルドできるはずです。必ずしも簡単でも便利でもありませんが、numpyやscipyと同じように機能するはずです。

于 2012-07-24T17:10:55.103 に答える
1

私のようにscikitlearnのインストール中に問題が発生し、エラーが発生した場合は、

ImportError: numpy is not installed.
scikit-learn requires numpy >= 1.11.0.

ローカル/開発環境のバージョンを確認し、Pythonバージョンであっても、デプロイ中にその特定のバージョンを使用する必要があります。

pip freezezenpoyが述べているように使用するか、以下のいずれかを使用します。

import scipy
import sklearn
import numpy

print(scipy.__version__)
print(sklearn.__version__)
print(numpy.__version__)

特にこのバージョンをに追加しますrequirements.txt

scipy==1.4.1
scikit-learn==0.22.2.post1
numpy==1.19.5

Pythonランタイムherokuを設定するには、使用する正確なバージョン番号を宣言するファイルをアプリのルートディレクトリに追加します。runtime.txt

python-3.7.10
于 2021-06-12T17:34:33.430 に答える
0

Python3でこのためのビルドパックを作成しました:https ://github.com/dwnld/heroku-buildpack-python3-sklearn

于 2014-11-24T21:38:01.613 に答える
-1

conda buildpackを使用し、conda-requirements.txtファイルに「nomkl」を追加してスラッグサイズを下げます。

于 2016-06-24T15:58:39.140 に答える