【问题标题】:import pycrypto in dev_appserver.py on Google App Engine gives IOError在 Google App Engine 上的 dev_appserver.py 中导入 pycrypto 会产生 IOError
【发布时间】:2012-06-11 18:03:44
【问题描述】:

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

【问题讨论】:

标签: google-app-engine pycrypto


【解决方案1】:

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

【讨论】:

  • Chris:我认为您可能将“安装”与“复制到项目的根目录”混为一谈。除非该库碰巧与 GAE 开发工具包捆绑在一起,否则先验是必要的——而 pyCrypto 不是,后者是多余的。 Google docs state(至少对于 Django)“您不需要将下载的版本添加到应用程序目录中。”
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多