मेरे पास एक ऐसा फ़ंक्शन है जो PyCrypto का उपयोग करके एईएस के साथ एक स्ट्रिंग को एन्क्रिप्ट करता है। जब मैं अपने यूनिट परीक्षणों में उस समारोह को कॉल करता हूं, तो सब कुछ ठीक काम करता है। उत्पादन के माहौल पर, यह ठीक काम करता है। हालांकि, जब GAE विकास सर्वर पर फ़ंक्शन कहा जाता है, तो एक त्रुटि फेंक दी जाती है: "आयात त्रुटि: नाम ब्लॉकलगो आयात नहीं कर सकता"। मैंने इसे विंडोज 7 (64 बिट) और मैक ओएस 10.5 पर परीक्षण किया। दोनों के परिणामस्वरूप एक ही त्रुटि हुई। मैं पाइथन 2.7 के साथ Google ऐप इंजन का उपयोग कर रहा हूं। क्या समस्या हो सकती है?Google App Engine विकास सर्वर में PyCrypto "ImportError: नाम ब्लॉकलगो आयात नहीं कर सकता"
app.yaml
application: xxx
version: 6
runtime: python27
api_version: 1
threadsafe: true
libraries:
- name: django
version: "1.2"
- name: webapp2
version: "2.3"
- name: jinja2
version: "2.6"
- name: pycrypto
version: "2.3"
- name: PIL
version: "1.1.7"
builtins:
- appstats: on
- remote_api: on
inbound_services:
- mail
- warmup
एन्क्रिप्शन समारोह:
def encrypt(plaintext):
from Crypto.Cipher import AES
import hashlib
password = 'xxx'
key = hashlib.sha256(password).digest()
mode = AES.MODE_ECB
encryptor = AES.new(key, mode)
BLOCK_SIZE = 16
PADDING = '{'
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
EncodeAES = lambda c, s: b58encode(c.encrypt(pad(s)))
encrypted = EncodeAES(encryptor, plaintext)
if len(encrypted) < 22:
for i in range (len(encrypted), 22):
encrypted += "_"
return encrypted
बस कुछ भी। आपको अपना ऐप.मैम और कुछ कोड दिखाना होगा। – Chris