如何在GAE Python中使用不同版本的PyCrypto



我下载了PyCrypto的实验版本(PyCrypto-2.7a1.tar.gz)。我已经将"Crypto"目录(从PyCrypto-2.7a1.tar.gz中提取)复制到了我的项目文件夹中。

在app.yaml文件中:

libraries:
- name: pycrypto
  version: 2.7 # latest 

如果我试图在app.yaml:中为PyCrypto提供2.7a1或2.7版本,我会出现错误(在部署时)

appcfg.py: error: Error parsing C:gauravcodingpythonxxapp.yaml: pycrypto version "2.7" is not supported, use one of: "2.3", "2.6" or "latest" ("latest" recommended for development only)
  in "C:gauravcodingpythonxxapp.yaml", line 73, column 1.

如何在app.yaml中提供正确的PyCrypto版本?

您使用app.yaml文件来告诉应用程序引擎您只想使用的哪些库和版本用于平台上可用的第三方库。

在您的情况下,您想要使用一个不可用的库版本,所以您不能使用该方法来配置它

相反,你可以按照另一个问题中概述的方法将你想要使用的库上传到应用程序引擎:

  1. 下载库并在GAE应用程序目录中解压缩。在本例中,目标目录称为pycrypto26
  2. 将指向该库的路径包含在
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'pycrypto26/lib'))
  1. 导入相关模块
import Crypto
from Crypto.Hash import SHA256, SHA512

就是一个完整的工作示例

import webapp2
import logging
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'pycrypto26/lib'))
import Crypto
from Crypto.Hash import SHA256, SHA512
class MainPage(webapp2.RequestHandler):
    def get(self):
        logging.info("Running PyCrypto with version %s" % Crypto.__version__)
        self.response.write('<html><body>')
        self.response.write( SHA256.new('abcd').hexdigest() + "<br>" )
        self.response.write( SHA512.new('abcd').hexdigest() + "<br>")
        self.response.write('</body></html>')
application = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

相关内容

  • 没有找到相关文章

最新更新