【问题标题】:app engine: ImportError: No module named Crypto.Hash应用程序引擎:ImportError:没有名为 Crypto.Hash 的模块
【发布时间】:2015-03-30 15:30:28
【问题描述】:

我有一个使用 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 就可以了

我必须指出,pycrypto 是由 App Engine 支持的,它包含在 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 可以使用的地方

【问题讨论】:

  • 在我的情况下,该库包含在 appengine 支持的库列表中
  • Oups .. 对 :) 你必须将它包含在 app.yaml 中。你这样做了吗?
  • 我撤回了封闭投票,因为我没有注意到它在名单上..
  • 谢谢,如果我在生产中发送代码它可以工作,这是我系统的问题
  • 你运行的是什么操作系统?

标签: python google-app-engine pycrypto


【解决方案1】:

这似乎是在 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

【讨论】:

    【解决方案2】:

    使用dev_appserver.py从命令行运行SDK,而不是使用GUI(假设您已经检查过它是通过pip安装的)。

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

    【讨论】:

      猜你喜欢
      • 2012-12-25
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 2018-03-10
      • 2017-12-17
      • 2016-12-08
      • 1970-01-01
      相关资源
      最近更新 更多