2012-06-28 14 views
5

मेरे पास एक ऐसा फ़ंक्शन है जो 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 
+1

बस कुछ भी। आपको अपना ऐप.मैम और कुछ कोड दिखाना होगा। – Chris

उत्तर

5

यकीन PyCrypto कि अपने स्थानीय सिस्टम पर स्थापित किया गया है का संस्करण बनाने संस्करण app.yaml में निर्दिष्ट के समान है। पैकेज को अपग्रेड करने से पहले दो बार सोचें।

+0

संयोग से, कोई यहां v2.3 डाउनलोड कर सकता है: https://github.com/dlitz/pycrypto/tags –

+0

मेरे लिए बहुत अच्छा काम किया लेकिन मुझे आश्चर्य हुआ: हर दूसरे पैकेज के विपरीत जीएई libs के लिए समर्थन है, यह आपको स्थापित करना है स्वयं। कानूनी कारण? – ckhan