我试图用Google的AppEngine来教自己python,而且我无法运行dev服务器。 我得到这个错误:
回溯(最近一次通话最后):
文件“/opt/google_appengine/google_appengine_1.2.7/dev_appserver.py”,第60行,在run_file( file ,globals())文件中的“/opt/google_appengine/google_appengine_1.2.7/dev_appserver.py”,第57行,在run_file execfile (script_path,globals_)文件“/opt/google_appengine/google_appengine_1.2.7/google/appengine/tools/dev_appserver_main.py”,第65行,来自google.appengine.tools import os_compat ImportError:无法导入名称os_compat
Ubuntu 9.10自带的python2.6(没有工作),我安装了python2.5(没有工作),并试图用python dev_appserver.py helloWorld (没有工作)以及运行dev_appserver运行它。 py编辑完第一行就是:
#!/usr/bin/env python2.5
我似乎无法find任何与此错误在线。 我发现的唯一问题是关于使用python 2.5,我想我已经解决了这个问题。
通过Google Cloud SDK更新后无法启动appengine应用程序
如何在Windows系统上testingApp Engine项目?
'gcloud'不被识别为内部或外部命令,可操作程序或batch file
需要帮助开始使用谷歌应用程序引擎(PYTHON 2.7)
Google App Engine启动器无法启动
凯尔build议我需要设置我的PYTHONPATHvariables。 运行后
export PYTHONPATH=/opt/google_appengine/google_appengine_1.2.7
尝试运行dev_appserver.py时,我仍然遇到同样的错误。 我是否设置了PYTHONPATH? 或者,我该如何卸载协议缓冲区python项目? 我没有使用Ubuntu的一个,并已经卸载它。
Win 7 Home Premium无法运行Python 2.7.2和Google App Engine SDK 1.6.1
GAE“没有属性”HTTPSHandler“”dev_appserver.py
Google App Engine“manual_scaling”无法正常工作
AppEngine SDK for Windows和Windows上的Ubuntu上的Bash
Google App Engine部署导致媒体错误
问题似乎是Karmic Koala 9.10(Ubuntu的最新版本)随Ubuntu One一起发布,这是一个依赖Google 协议缓冲库的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 API的错误 。
这是一个文件许可问题。 os_compat.py不能被用户读取,只能由root用户读取。 我不知道我是否搞砸了,或者如果默认权限没有全部读取,但是这是修复。
我不愿意接受我自己的回答后,凯尔给了这样一个很好的回应,但我不需要$ PYTHONPATH修复程序,现在我做了sudo chown -R +r /opt/google_appengine/google_appengine_1.2.7
有了这个错误,Python正在说它无法找到或读取它正试图导入的名称。 由于os_compat的导入是AppEngine dev_appserver.py第一个可执行行,我怀疑你的路径配置的方式有问题。
最新版本的Ubuntu(10.10)也删除了Python 2.5,使安装App Engine开发环境变得非常痛苦。
我(终于)让我的环境工作(包括使用App Engine Helper进行单元测试)。 我建立了这个可能对别人有用的bash脚本。 它安装:
源码
libsqlite
PEP8
嘲笑
OpenSSL的
Python 2.5.2
Python SSL库
Django 1.1(生产中的最新版本)
App Engine
App Engine助手
http://pageforest.googlecode.com/hg/tools/pfsetup
Ubuntu 11.04提供了Python 2.6作为默认版本。 建议使用版本为2.5的Google应用引擎。 我使用它虽然多年的Python 2.6没有任何问题。
为了使用python 2.6顺利执行,你需要做的是编辑google/appengine/tools/dev_appserver.py并添加这三行
'_counter','_fastmath','strxor',
在'XOR',以及'_Crypto_Cipher__AES',之前'_Crypto_Cipher__AES',在1350行左右。
如果您正在使用Google Cloud SDK ,请将其放入~/.profile 。
export CLOUDSDK_ROOT_DIR="/path/to/google/cloud/sdk/" export APPENGINE_HOME="${CLOUDSDK_ROOT_DIR}/platform/appengine-java-sdk" export GAE_SDK_ROOT="${CLOUDSDK_ROOT_DIR}/platform/google_appengine" # The next line enables Java libraries for Google Cloud SDK export CLAsspATH="${APPENGINE_HOME}/lib":${CLAsspATH} # The next line enables Python libraries for Google Cloud SDK export PYTHONPATH=${GAE_SDK_ROOT}:${PYTHONPATH} # * OPTIONAL STEP * # If you wish to import all Python modules,you may iterate in the directory # tree and import each module. # # * WARNING * # Some modules have two or more versions available (Ex. django),so the loop # will import always its latest version. for module in ${GAE_SDK_ROOT}/lib/*; do if [ -r ${module} ]; then PYTHONPATH=${module}:${PYTHONPATH} fi done unset module
不要放在~/.bashrc里面,因为每次打开一个bash会话时,所有这些模块都会一次又一次的添加到你的PYTHONPATH环境变量中。