Virtualenv __future__模块在命令行有效,但在运行dev_appserver.py时无效
我在使用虚拟环境运行App Engine时遇到了一个奇怪的错误。下面是错误信息:
File "/home/matthew/dev/sdks/google_appengine_1.5.2/google/appengine/tools/dev_appserver.py", line 2318, in LoadModuleRestricted description)
File "/home/matthew/dev/projects/webapp2/project/src/webapp2.py", line 11, in <module>
from __future__ import with_statement
ImportError: No module named __future__
- 如果我在虚拟环境中运行python并输入
import __future__
,它可以正常导入。 - 如果我关闭虚拟环境,然后运行dev_appserver.py,应用程序可以正常工作。
- 但是,如果我的虚拟环境是激活状态,并且我运行dev_appserver.py(尽管第一个情况是对的),应用程序就无法工作,并且出现了上面的错误。
为什么在运行Python解释器时可以使用__future__
,但在运行dev_appserver.py时却不行呢?
1 个回答
1
这是一个叫做bug 4339的问题。确保你使用的是SDK版本1.6.0,然后执行以下操作:
$ cd /usr/local/google_appengine/google/appengine/tools
$ wget "http://googleappengine.googlecode.com/issues/attachment?aid=43390029000&name=dev_appserver_import_hook.patch&token=974d9f138a5604dc7eb0526156b26cc7" -O dev_appserver.patch
$ patch -p1 < dev_appserver.patch