在Google App Engine上的dev_appserver.py中导入pycrypto会产生IOError

时间:2012-06-11 18:03:44

标签: google-app-engine pycrypto

我正在尝试使用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

2 个答案:

答案 0 :(得分:1)

是的,您必须自己安装第三方库。 谷歌确切地解释了他们平台上提供的版本, 所以这不应该是任何问题。

答案 1 :(得分:0)

实现这一目标的最佳方法是创建一个虚拟环境并在其中安装pycrypto。未检测到app.yaml内的库的原因很可能是因为您的计算机中安装了多个版本的python,并且用于运行该程序的版本可能与安装库的版本不同