2015-03-30 11 views
6

Tôi có một kịch bản có sử dụng Crypto.Hash nhưng nhập thất bại với lỗi:ứng dụng động cơ: ImportError: Không có mô-đun tên Crypto.Hash

ImportError: No module named Crypto.Hash 

trong tôi sys.path nếu tôi in danh sách sys.path, có cụm từ này (trong số những người khác):

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/pycrypto-2.6 

Nếu tôi mở đường dẫn ở trên, không có thư mục pycrypto-2.6.

Làm cách nào để tải pycrypto 2.6?

Nếu tôi nhập Crypto.Hash chạy python từ dòng lệnh nó hoạt động

tôi phải chỉ ra rằng pycrypto được hỗ trợ bởi App Engine, nó được bao gồm trong this list.

Hơn nữa tôi đã bao gồm các module trong app.yaml tập tin của tôi:

libraries: 
- name: webapp2 
    version: "2.5.2" 
- name: pycrypto 
    version: latest 
- name: lxml 
    version: "2.3" 
- name: ssl 
    version: latest 

Nếu tôi gửi mã trong sản xuất trên appengine nó hoạt động, vấn đề là trong hệ thống của tôi, tôi có lẽ nên tải về một phiên bản biên dịch của pycrypto và đặt nó ở đâu đó appengine thể sử dụng nó

+0

trong trường hợp của tôi thư viện được bao gồm trong danh sách thư viện được hỗ trợ bởi appengine – JackNova

+0

Oups .. right :) Bạn sẽ phải đưa nó vào app.yaml .. bạn đã làm điều đó chưa? – Lipis

+0

Tôi rút lại phiếu bầu đã đóng vì tôi không nhận thấy nó có trong danh sách .. – Lipis

Trả lời

6

có vẻ như một vấn đề xảy ra trên MAC OSX, tất cả tôi đã cố gắng làm là như sau:

trước hết bạn cần phải biết được nơi bạn cài đặt của pycripto là, chạy

sudo pip install pycrypto 

hoặc là bạn cài đặt thư viện hoặc bạn nhận được đường dẫn nơi nó được cài đặt

Requirement already satisfied (use --upgrade to upgrade): pycrypto in ...

sau đó, xem xét rằng đây là một vấn đề mà không xảy ra trong sản xuất trên appengine, tôi đã làm điều này:

try: 
    from Crypto.Hash import SHA 
except ImportError: 
    import sys 
    sys.path.append('/[mypath]/anaconda/lib/python2.7/site-packages') 
    from Crypto.Hash import SHA # requires PyCrypto 
0

Chạy SDK từ dòng lệnh với dev_appserver.py, chứ không phải với GUI (giả sử bạn đã kiểm tra thấy nó được cài đặt qua pip).

Tôi đã gặp sự cố tương tự với App Engine không nhập thư viện cục bộ, mặc dù chúng được cài đặt và mặc dù chúng hoạt động tốt trong sản xuất. MySQLDB xuất hiện trong đầu, mặc dù tôi không thể tìm thấy tham chiếu. Dù sao, điều này làm việc cho tôi.

Các vấn đề liên quan