app engine:ImportError:没有名为Crypto.Hash的模块

Jac*_*ova 9 python google-app-engine pycrypto

我有一个使用Crypto.Hash但导入失败但错误的脚本:

ImportError: No module named Crypto.Hash
Run Code Online (Sandbox Code Playgroud)

在我的sys.path打印sys.path列表中,有这个条目(以及其他):

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/pycrypto-2.6
Run Code Online (Sandbox Code Playgroud)

如果我打开上面的路径,则没有pycrypto-2.6目录.

我怎样才能加载pycrypto 2.6?

如果我Crypto.Hash从命令行导入运行python它的工作原理

我必须指出app Engine支持pycrypto,它包含在此列表中.

此外,我已将模块包含在我的app.yaml文件中:

libraries:
- name: webapp2
  version: "2.5.2"
- name: pycrypto
  version: latest
- name: lxml
  version: "2.3"
- name: ssl
  version: latest
Run Code Online (Sandbox Code Playgroud)

如果我在生产中发送代码在appengine它工作,问题是在我的系统我应该下载pycrypto的编译版本并把它放在某处appengine可以使用它

Jac*_*ova 10

这似乎是在MAC OSX上发生的问题,我设法做的就是:

首先,您需要知道运行pycripto的位置

sudo pip install pycrypto
Run Code Online (Sandbox Code Playgroud)

要么安装库,要么获得安装库的路径

要求已经满足(使用--upgrade升级):pycrypto in ...

那么,考虑到这是一个在appengine生产中不会发生的问题,我这样做了:

try:
    from Crypto.Hash import SHA
except ImportError:
    import sys
    sys.path.append('/[mypath]/anaconda/lib/python2.7/site-packages')
    from Crypto.Hash import SHA # requires PyCrypto
Run Code Online (Sandbox Code Playgroud)