Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python GAE导入错误;sys.path显示appengine库的错误路径_Python_Python 2.7_Google App Engine_Google Cloud Storage_Jinja2 - Fatal编程技术网

Python GAE导入错误;sys.path显示appengine库的错误路径

Python GAE导入错误;sys.path显示appengine库的错误路径,python,python-2.7,google-app-engine,google-cloud-storage,jinja2,Python,Python 2.7,Google App Engine,Google Cloud Storage,Jinja2,我正在Windows10上用Python为Google应用程序引擎开发一个web应用程序。当我的main.py只是提供模板时,一切都很好 import os import urllib from google.appengine.api import users import jinja2 import webapp2 JINJA_ENVIRONMENT = jinja2.Environment( loader=jinja2.FileSystemLoader(os.path.dirna

我正在Windows10上用Python为Google应用程序引擎开发一个web应用程序。当我的main.py只是提供模板时,一切都很好

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;pip安装/升级的尝试表明它已经安装并且是最新的,我在
    c:\python27\lib\site packages
    中看到了它
  • PYTHONPATH=C:\python27;c:\python27\lib;C:\Python27\DLLS
    用于系统和用户
  • 有一次,我将带有PIP的GoogleAppEngineCloudStorageClient安装到我的应用程序的lib目录中。它不起作用(模块导入失败),所以我也尝试添加了
    sys.path.append(os.path.join(os.path.dirname(\uu file\uu),“lib”)
    ,但没有任何帮助我想这是我开始出现jinja2导入错误的时候。因此我从main.py中删除了该语句。仍在获取jinja2导入错误。我尝试了
    pip卸载GoogleAppEngineCloudStorageClient
    ,但它说没有安装,所以我尝试删除lib目录。仍在获取jinja2导入错误
  • 已尝试重新启动服务并重新启动我的计算机
编辑:

我将main.py剥离到新的项目模板

import webapp2

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

app = webapp2.WSGIApplication([
    ('/', MainHandler)
], debug=True)
现在我得到一个webapp2的导入错误:

ImportError: No module named webapp2
编辑2:

通过将其插入main.py的顶部

import sys
print sys.path
我可以看到所有谷歌软件包的错误路径:

'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:\ProgramFiles(x86)\Google\Google\u appengine\lib


我不知道为什么我在尝试安装一个软件包之前没有遇到这个问题,但这可能与有关。

更新:SDK版本1.9.40修复了这个问题

SDK版本1.9.37中正是引入了这种行为,请参阅

如果您的SDK版本是1.9.37或1.9.38,请降级到1.9.36,您可以找到。至少在修复程序发布之前。

摘要:

webapp2和jinja2导入错误是由sys.path损坏引起的,这是版本1.9.37或1.9.38中存在GAE缺陷的结果。只影响发展,;部署的版本应该可以工作。它可以在升级或尝试安装其他项目后立即发生

解决方案:

  • 将AppEngineSDK降到1.9.36对我来说很有效
  • GAE缺陷将在1.9.38之后的某个时间点修复。检查状态
  • 根据,另一种解决方法是在appengine_config.py中手动修补sys.path
你的
app.yaml
中的
库是什么样子的?@mgilson库:-名称:webapp2版本:“2.5.2”-名称:pycrypto版本:最新-名称:jinja2版本:最新我应该澄清,在部署它时它工作正常。只有在本地运行才会失败。顺便说一句,我尝试过修复app engine sdk和python安装,但仍然失败。在卸载app engine sdk 1.9.38并重新安装版本1.9.36后,导入错误消失了。我还可以如上所述重新安装云存储库,并且在部署时它可以与我的live CS配合使用。因此,问题可能是AppEngine云存储客户端和sdk v1.9.38的组合,与google问题有关。有人添加了一个这样的答案,但它似乎已经消失了。我只是取消了它-我误解了你的评论,认为这篇文章没有回答你的问题:)我在上面提到了这个问题,但不认为它是完全一样的,因为我已经在1.9.37-8上运行了六周,没有这样的问题。同样,删除protobuf也没有帮助。我将尝试卸载和重新安装。谷歌同意这是同一个问题,并将其合并。