3

AWS Elastic Beanstalk上で動作する既存のPython(django)アプリケーションで作業する必要があります。 requirements.txtのすべての要件が仮想envにインストールされているようです(私はそれが正しいと思っています)。私の問題は、yumを使っていくつかのライブラリをインストールしたことです。私の豆の木のインスタンスのための私の依存関係の設定は次のようになります。AWS Elastic Beanstalkでvirtualenv system-site-packagesを使用するには?

packages: 
yum: 
    python27-devel: [] 
    git: [] 
    nginx: [] 
    pcre-devel: [] 
    freetype-devel: [] 
    libpng-devel: [] 
    postgresql93-devel: [] 
    graphviz-devel: [] 
    blas-devel: [] 
    atlas-devel: [] 
    lapack-devel: [] 
    gcc-c++: [] 
    python27-numpy: [] 
    python27-matplotlib: [] 
    python27-psycopg2: [] 

私は明示的にnumpyの、matplotlibのとpsycopg2のようないくつかのPythonライブラリをインストールするが、私のアプリケーションが仮想ENVで実行するように思われるので、これらのライブラリはアクセスできません見ることができるように私のアプリのためにそれは起動時にクラッシュする。このタイプのエラーが発生しました。

コマンドが失敗しました。戻りコード:1出力:(TRUNCATED).... 7/site-packages/django/db/backends/postgresql_psycopg2/base.py "、行20、ImproperlyConfigured("エラー読み込み中のpsycopg2モジュール:%s "%e )django.core.exceptions.ImproperlyConfigured:psycopg2モジュールの読み込み中にエラーが発生しました:psycopg2という名前のモジュールがありませんでした。container_command 01_imgrate in .ebextensions/02-python.config failed。詳細は/var/log/eb-activity.logをコンソールまたはEB CLI。

私はあなたがオプション・システムのsite-packagesでシステムライブラリにアクセスするための仮想のenvを許可することができますことを読んだが、AWS Elastic Beanstalkでインスタンスのためにそうするためにどのように?

EDIT :私がしたくないのは、numpy、matplotlib、psycopg2をコンパイルしてからpipでインストールすることですすべてとそれは非常に長いです。 Yumを使ってこれらのライブラリをインストールして、プリコンパイルされたバージョンを入手したいのです。これらのインストールを自動化したいのですが、私は手動でインストールするためにマシン上でsshしたくありません。これが私の問題が現れる場所です。 :)

ありがとうございました!

(私の英語のため申し訳ありませんが、それは私の母国語ではありません)

答えて

3

TL; DR: .ebextensionsフォルダの下に、設定ファイルに次のコマンドを追加します。

commands: 
    01_add_dist_files_to_site: 
    command: "echo /usr/lib64/python2.7/dist-packages > /opt/python/run/venv/local/lib64/python2.7/site-packages/dist.pth" 

これは下のライブラリを公開する必要があります/usr/lib64/python2.7/dist-packages(ここでyumはnumpyとscipyをEBのvirtualenvが使用するインタプリタにインストールします)。


Elastic Beanstalkは、お客様の要件をインストールするために/opt/python/run/venv/bin/pip install -r requirements.txtを使用しています。 python virtualenvをインストールしたパッケージに公開するように設定する必要があります。

(venv)[[email protected] app]# /opt/python/run/venv/bin/python2.7 -msite 
sys.path = [ 
    '', 
    '', 
    '/opt/python/run/venv/local/lib64/python2.7/site-packages', 
    '/opt/python/run/venv/local/lib/python2.7/site-packages', 
    '/opt/python/run/venv/lib64/python2.7', 
    '/opt/python/run/venv/lib/python2.7', 
    '/opt/python/run/venv/lib64/python2.7/site-packages', 
    '/opt/python/run/venv/lib/python2.7/site-packages', 
    '/opt/python/run/venv/lib64/python2.7/lib-dynload', 
    '/usr/lib64/python2.7', 
    '/usr/lib/python2.7', 
] 

だから、上場フォルダのいずれかに、ご希望のライブラリへのパスが含まれている.pthファイルを追加するのに十分である(hereを参照してください。

私が見つけたEBのvenvにアクセス可能なサイトのライブラリを調べます)。これは最初に述べたように行うことができます。不要なインストール手順を省略するために、yumを使用してインストールされたものと正確なバージョンのPythonパッケージを保持するには、requirements.txtが必要であることに注意してください。

関連する問題