GAE导入错误;系统路径显示appengine库的错误路径

2024-04-25 21:31:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python在windows10上为googleappengine开发一个web应用程序。当我主.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)

但是后来我尝试添加云存储,不管我尝试什么库,都会出现导入错误。所以我从主.py,现在我得到了一个错误的金贾2,它一直运作良好!在

^{pr2}$

我不记得我试过的每件事,但我知道的是:

  • 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(__file__), "lib")),但没有用。我想这是我开始得到jinja2导入错误的时候。所以我从主.py. 仍然收到jinja2导入错误。我尝试了pip uninstall GoogleAppEngineCloudStorageClient,但它说没有安装,所以我尝试删除lib目录。仍然收到jinja2导入错误。在
  • 已尝试重新启动服务并重新启动我的计算机。在

编辑:

我脱光了衣服主.py一直到新的项目模板

^{3}$

现在我收到webapp2的导入错误:

ImportError: No module named webapp2

编辑2:

把这个插在我的主.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:\Program Files (x86)\Google\google_appengine\lib

我不知道为什么在我尝试安装那个包之前没有这个问题,但这可能与a reported google issue有关。在


Tags: pathpyimportjinja2oslib错误google
2条回答

更新:此问题已在SDK版本1.9.40中修复。在

有一个a GAE issue导致了sdk1.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。至少在修复程序发布之前。在

小结:

webapp2和jinja2导入错误是由系统路径损坏,是由于版本1.9.37或1.9.38中存在的GAE缺陷造成的。它只会影响开发;部署的版本应该可以工作。升级或尝试安装其他项目后,可能会立即发生这种情况。在

解决方案:

  • 把AppEngineSDK降到1.9.36对我很有效。在
  • GAE缺陷将在1.9.38之后的某个时间点得到修复。检查Issue 12963的状态。在
  • 根据Google issue 13084,另一个解决方法是手动修补系统路径在阿彭丁_配置.py. Docs here。在

相关问题 更多 >