我正在尝试使用 Google 的 AppEngine 自学 Python ,并且我无法运行开发服务器。我收到此错误:
Traceback (most recent call last):
File "/opt/google_appengine/google_appengine_1.2.7/dev_appserver.py", line 60, in run_file(file, globals()) File "/opt/google_appengine/google_appengine_1.2.7/dev_appserver.py", line 57, in run_file execfile(script_path, globals_) File "/opt/google_appengine/google_appengine_1.2.7/google/appengine/tools/dev_appserver_main.py", line 65, in from google.appengine.tools import os_compat ImportError: cannot import name os_compat
Ubuntu 9.10 附带了 python2.6(不起作用),我安装了 python2.5(不起作用),并尝试使用 python dev_appserver.py helloWorld
运行它(没有不起作用)以及在将第一行编辑为以下内容后运行 dev_appserver.py:
#!/usr/bin/env python2.5
我似乎无法在网上找到任何出现此错误的内容。我发现的唯一问题是使用 python 2.5,我想我已经解决了这个问题。
Kyle 建议我需要设置 PYTHONPATH 变量。运行后
export PYTHONPATH=/opt/google_appengine/google_appengine_1.2.7
尝试运行 dev_appserver.py 时仍然遇到相同的错误。我是否设置了 PYTHONPATH 错误?或者,如何卸载 protocol buffers python 项目?我没有使用 Ubuntu One,并且已经卸载了它。
最佳答案
问题似乎是 Karmic Koala 9.10(Ubuntu 的最新版本)附带 Ubuntu One,这是一款依赖于 Google 的 protocol buffers 的 Python 应用程序。图书馆。 python-protobuf 包在/usr/lib/pymodules/python2.6 中提供 google.protobuf 包。
遗憾的是,AppEngine SDK 包含另一个名为 google.appengine 的软件包。因此,在代码中的某个位置,正在导入 google 包,并且首先在 PYTHONPATH 上找到包含 protobuf 的包。 Python 会缓存在 sys.modules 中找到的第一个包,因此 SDK 中的第二个 google 包永远不会被导入。
您可以将 google AppEngine SDK 移至 PYTHONPATH 的前面。这应该确保 Python 找到 google.appengine 包而不是 python-protobuf 提供的包。
PYTHONPATH=/opt/google_appengine/google_appengine_1.2.7 \
python dev_appserver.py helloWorld
这是一个错误,应该报告给 AppEngine SDK project .罢工>
更新:我已提交 bug against the AppEngine API .
关于python - 在 Ubuntu 上运行 Google 的 python appengine 时出现导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1705831/