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

时间:2015-03-30 15:30:28

标签: python google-app-engine pycrypto

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

ImportError: No module named Crypto.Hash

在我的sys.path中,如果我打印sys.path列表,则会有此条目(包括其他内容):

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/pycrypto-2.6

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

如何加载pycrypto 2.6?

如果我从命令行导入Crypto.Hash运行python,它可以运行

我必须指出App Engine支持pycrypto,它包含在this list中。

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

libraries:
- name: webapp2
  version: "2.5.2"
- name: pycrypto
  version: latest
- name: lxml
  version: "2.3"
- name: ssl
  version: latest

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

2 个答案:

答案 0 :(得分:9)

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

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

sudo pip install pycrypto

要么安装库,要么得到安装它的路径

  

要求已经满足(使用--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

答案 1 :(得分:1)

使用MVS 2010 v. 10.0.40219.1 SP1Rel从命令行运行SDK,而不是使用GUI (假设您已经检查过它是通过{{1}安装的})。

我发现App Engine没有在本地导入库的类似问题,即使它们已经安装,即使它们在生产中运行良好。我想到了MySQLDB,虽然我找不到引用。无论如何,这对我有用。