我下载了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
文件来告诉应用程序引擎您只想使用的哪些库和版本用于平台上可用的第三方库。
在您的情况下,您想要使用一个不可用的库版本,所以您不能使用该方法来配置它
相反,你可以按照另一个问题中概述的方法将你想要使用的库上传到应用程序引擎:
- 下载库并在GAE应用程序目录中解压缩。在本例中,目标目录称为
pycrypto26
- 将指向该库的路径包含在
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
就是一个完整的工作示例
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)