Virtualenv __future__模块在命令行有效,但在运行dev_appserver.py时无效

2 投票
1 回答
1180 浏览
提问于 2025-04-16 22:24

我在使用虚拟环境运行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

撰写回答