我正在尝试使用dev_appserver.py
测试Google App Engine应用,但是当我运行import Crypto
时,我会从IOError
(即无访问权限)回溯中摘录以下内容:
...
import Crypto
...
File "/System/Library/Frameworks/Python.framework/Versions
/2.7/lib/python2.7/zipfile.py", line 867, in read
return self.open(name, "r", pwd).read()
File "/System/Library/Frameworks/Python.framework/Versions
/2.7/lib/python2.7/zipfile.py", line 882, in open
zef_file = open(self.filename, 'rb')
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google
/appengine/tools/dev_appserver_import_hook.py", line 592, in __init__
raise IOError(errno.EACCES, 'file not accessible', filename)
IOError: [Errno 13] file not accessible: '/Library/Python/2.7/site-packages
/pycrypto-2.3-py2.7-macosx-10.7-intel.egg'
我使用的是Mac OS X 10.7,使用Python 2.7,使用Google App Engine 1.6.6。
自PyCrypto is supported on Google App Engine以来,我希望它可以在开发服务器上运行。
我知道dev_appserver.py
会阻止加载外部文件。但是,我注意到appengine/tools/dev_appserver_import_hook.py
似乎在白名单中包含所有必需的文件(例如_fastmath
)。
注意,在app.yaml
我有
libraries:
- name: pycrypto
version: latest
似乎我错过了一些明显但至关重要的东西。任何想法都将不胜感激。
编辑有关详细信息,请参阅:https://code.google.com/p/googleappengine/issues/detail?id=12129
答案 0 :(得分:1)
是的,您必须自己安装第三方库。 谷歌确切地解释了他们平台上提供的版本, 所以这不应该是任何问题。
答案 1 :(得分:0)
实现这一目标的最佳方法是创建一个虚拟环境并在其中安装pycrypto。未检测到app.yaml
内的库的原因很可能是因为您的计算机中安装了多个版本的python,并且用于运行该程序的版本可能与安装库的版本不同