0

我下载了 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:\gaurav\coding\python\x\x\app.yaml: pycrypto version "2.7" is not supported, use one of: "2.3", "2.6" or "latest" ("latest" recommended for development only)
  in "C:\gaurav\coding\python\x\x\app.yaml", line 73, column 1.

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

4

1 回答 1

1

您使用该app.yaml文件告诉 App Engine 哪些库和版本用于平台上可用的第三方库

在您的情况下,您想使用不可用的库版本,因此您不能使用该方法来配置它。

取而代之的是,您可以按照其他问题中概述的方法将要使用的库上传到 App Engine :

  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)
于 2014-12-04T10:14:40.667 回答