1

私はGoogle App EngineのためのWebアプリケーションをWindows 10でPythonで開発しています。私のmain.pyが単にテンプレートを提供していた時、すべてうまくいきました。GAEインポートエラー。 sys.pathはappengineライブラリの間違ったパスを示します

import os 
import urllib 
from google.appengine.api import users 
import jinja2 
import webapp2 

JINJA_ENVIRONMENT = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), 
    extensions=['jinja2.ext.autoescape'], 
    autoescape=True) 

しかし、私はクラウドストレージを追加しようとしましたが、どのライブラリを試してもインポートエラーが発生しました。だから私はmain.pyからこれらの参照を削除しましたが、今は正常に動作していたjinja2でエラーが発生します。

ImportError: No module named jinja2 

私は、私が試したすべてを覚えているが、ここで私が知っているものだはありません。

  • Jinja2のがインストールされています。インストール/アップグレードをピップしようとすると、すでにインストールされ、最新の状態になっていると言われています。それはc:\python27\lib\site-packagesにあります。
  • PYTHONPATH=C:\python27;c:\python27\lib;C:\Python27\DLLS(システムとユーザー用)
  • 私のアプリのlibディレクトリthisにPIPのGoogleAppEngineCloudStorageClientをインストールしました。それは動作しませんでした(モジュールのインポートに失敗しました)ので、私もsys.path.append(os.path.join(os.path.dirname(__file__), "lib"))を追加しようとしましたが、それは助けになりませんでした。 これは私がjinja2インポートエラーを取得し始めたときだと思います。したがって、私はmain.pyからステートメントを削除しました。まだjinja2のインポートエラーが発生しています。私はpip uninstall GoogleAppEngineCloudStorageClientを試しましたが、インストールされていないと言われていましたので、libディレクトリを削除するだけでした。まだjinja2のインポートエラーが発生しています。
  • サービスの再起動とマシンの再起動を試みました。

EDIT:

私は

import webapp2 

class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.write('Hello world!') 

app = webapp2.WSGIApplication([ 
    ('/', MainHandler) 
], debug=True) 

、すべての方法新しいプロジェクトテンプレートにmain.pyストリッピングし、今私はwebapp2をのインポートエラーを取得する:

ImportError: No module named webapp2 

EDIT 2:

これをmの先頭に挿入するとY main.py、

import sys 
print sys.path 

私はGoogleのすべてのパッケージの間違った道を見ることができます:

'C:\\Program Files (x86)\\Google\\lib\\webapp2-2.5.2', 
'C:\\Program Files (x86)\\Google\\lib\\pycrypto-2.6', 
'C:\\Program Files (x86)\\Google\\lib\\jinja2-2.6', 
'C:\\Program Files (x86)\\Google\\lib\\markupsafe-0.15', 
'C:\\Program Files (x86)\\Google\\lib\\setuptools-0.6c11', 
'C:\\Program Files (x86)\\Google\\lib\\protorpc-1.0', 
'C:\\Program Files (x86)\\Google\\lib\\webob-1.1.1', 
'C:\\Program Files (x86)\\Google\\lib\\yaml-3.10' 

私はしなかった理由を彼らが実際にC:\Program Files (x86)\Google\google_appengine\lib

に私にはわからないされていますその1つのパッケージをインストールしようとする前にこの問題がありますが、これはa reported google issueに関連している可能性があります。

+0

あなたの 'app.yaml'の' libraries'セクションはどのように見えますか? – mgilson

+0

@mgilsonライブラリ: - 名前:webapp2を 版: "2.5.2" - 名前: バージョンpycrypto:最新 - 名前:Jinja2の バージョン:私はそれを展開するときに、それが正常に動作することを明確にすべき – JackOfAll

+0

最新。それはローカルでのみ実行され、失敗します。ところで、私は、アプリエンジンのSDKとPythonのインストールを修復しようとしても、それはまだ失敗します。 – JackOfAll

答えて

2

アップデート:この問題はSDKバージョン1.9.40で修正されました。

a GAE issueがあります。これは、SDKバージョン1.9.37で導入されたこの動作を正確に引き起こします。"ImportError: No module named webapp2" after Linux SDK upgrade (1.9.35 -> 1.9.38)を参照してください。

SDKのバージョンが1.9.37または1.9.38で、1.9.36にダウングレードすると、hereが見つかります。少なくとも修正がリリースされるまで。

+0

私は上記の問題を述べましたが、私は1.9.37-8そのような問題はありません。また、protobufを削除しても役に立たなかった。アンインストールと再インストールを試みます。 – JackOfAll

+0

Googleは同じ問題であることに同意し、それをマージします。 – JackOfAll

0

概要:

webapp2をとJinja2のインポートエラーがのsys.pathの破損、バージョン1.9.37または1.9.38に存在GAE欠陥の結果によって引き起こされます。開発にのみ影響します。展開されたバージョンが機能するはずです。アップグレードや他のアイテムのインストールを試みた直後に発生する可能性があります。

ソリューション:

  • 1.9.36 にAppEngineSDKのダウングレードは私のために働きました。
  • GAEの不具合は、1.9.38の後のある時点で修正されます。ステータスはIssue 12963であることを確認してください。
  • Google issue 13084によると、別の回避策は、appengine_config.pyのsys.pathを手動で修正することです。 Docs here
関連する問題