1

私はGoogle App EngineのcloudstorageをDjango 1.8と一緒に使用しようとしています(Djangae経由で、これは関係ないはずです)。私は主に仕事をするために管理者経由でファイルをアップロードしようとしています。Google App EngineのDjango - PIL._imagingというモジュールはありません

実際にすべてがうまく動作すると、問題なくファイルをアップロードできます。同じものをローカルで実行すると、PILのImage.pyから次のインポートエラーが発生します。 Djangoは問題の一部であるように思わPILと枕がインストールされているローカルsitepackagesフォルダを、使用しています。この設定では

No module named PIL._imaging

。 (グローバルにインストールした後に)端末で直接Pythonを実行するだけで、_imagingを正しくインポートできます。

アイデア?これはOSX El Capitanにありますが、それは似たような問題に関連しているかもしれないと言っている人もいますが、今まで見つかったことはありませんでした。 documentationパー

答えて

0

、あなたはラップ "イメージAPI" を使用して取得:

from google.appengine.api import images 

Googleのimages APIは、バックエンドでPILや枕を使用しています。もし私があなただったら、私はgoogle.appengine.api.imagesを使ってみて、PILを直接使ってみません。次に、という正しい書類を使用しています。 API。

しかし、PILを使用してプロダクションで直接動作することを誓うと、Cライブラリ部分を「ホワイトリストに登録」することでローカルで動作するようにすることができます。あなたがこれを行うことができます:

PRODUCTION_MODE = not os.environ.get(
    'SERVER_SOFTWARE', 'Development').startswith('Development') 
if not PRODUCTION_MODE: 
    from google.appengine.tools.devappserver2.python import sandbox 
    sandbox._WHITE_LIST_C_MODULES += YOUR_MODULE_LIST 

をYOUR_MODULE_LISTでは、Cモジュールは、あなたのPILのインストールの一部であるかを把握する必要があります。

しかし、もう一度、GoogleのAPIを使用して、PILを直接使用しないでください。

+0

この場合、PILをインポートしようとするとエラーが発生しますが、そうではありません。このエラーは、Cライブラリを使用しようとするとPILの内部で発生します。 –

+0

申し訳ありませんが、あなたが正しいです。実際には、PILを直接使用している間は、ラップされたAPIを使用しています。 Cモジュールをホワイトリストに載せることもできますが、おそらく提供されているAPIの使用を検討するべきでしょう。私はそれに応じて私の答えを更新しています。 –

+0

@KenKinderドキュメントは実際にPILがサポートされていると言っていますhttps://cloud.google.com/appengine/docs/python/tools/built-in-libraries-27 – user1778606

関連する問題