Google が提供していないサードパーティの Python ライブラリを Google App Engine に追加するにはどうすればよいですか? Google App Engine で BeautifulSoup を使用しようとしていますが、使用できません。しかし、私の質問は、Google App Engine で使用したいライブラリについてです。
6 に答える
Google は、GAE プロジェクトにサードパーティ ライブラリを含めるための文書化された方法を提供しています。
Libraries in Python 2.7 docs の「Adding Third-party Packages to the Application」セクションを参照してください。
追加のピュア python サードパーティ パッケージを含めたい場合は、ベンダーを設定することで実行できます。ベンダーを使用すると、パッケージをプロジェクトのサブディレクトリにインストールして、コードに含めることができます。ベンダーを使用するには、プロジェクトのルートに appengine_config.pyを作成 (または変更)します。
from google.appengine.ext import vendor
# Add any libraries installed in the "lib" folder.
vendor.add('lib')
lib
そして、すべてのライブラリのソースコードをディレクトリに入れるだけです
> pip install beautifulsoup4 -t lib
したがって、プロジェクトのディレクトリ構造は次のようになります。
project
- lib
- bs4
- your_code.py
これにより、プロジェクトのソース ファイルがライブラリのパッケージ/モジュールを .xml ファイルに追加されたかのようにインポートできるようになりますPYTHON_PATH
。例えば:
# file: your_code.py
import bs4 # no need for 'from lib import bs4'
# do stuff with bs4...
次のコマンドを実行して、requirements.txt ファイルからすべてを簡単にインストールすることもできます。
> pip install -t lib -r requirements.txt
実際、この答えはここに適していると思います。
このリストに含まれていないサードパーティのライブラリを使用する場合は、手動で追加する必要があります。
他のライブラリを手動で含めるには、それらが存在するディレクトリ内にある必要がありapp.yaml
ます。したがって、たとえば、次の構造がある場合:
hello
├── libs
│ └── bs4
├── hello.py
└── app.yaml
次にhello.py
、ファイルの先頭に次の2行を配置する必要があります。
import sys
sys.path.insert(0, 'libs')
libs
これを実行すると、そのディレクトリに配置するサードパーティのライブラリを使用できるようになります。
例えば:
from bs4 import BeautifulSoup
使用するライブラリを含むフォルダーをアプリ エンジン プロジェクトにコピーするだけです。
その後、デプロイすると、アプリケーションとともにアップロードされ、使用できるようになります。
編集:ジェシーの答えは、私が今これを行う方法です。だからそうしなさい!
ここでの動作方法は次のとおりです。
import sys
# sys.path.insert(0, 'libs') #"Old" way, not working for me.
sys.path.append(os.path.join(os.path.dirname(__file__), "libs")) # This works!
次に、通常どおりインポートします。
from bs4 import BeautifulSoup
Beautifulsoup をプロジェクトのルートに配置して、すべてアップロードするだけです