我有一个使用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可以使用它
答案 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,虽然我找不到引用。无论如何,这对我有用。