2014-10-23 10 views
10

, ben this Flask tutorial takip ediyorum:Python/Matara hatası: "ImportError: _compare_digest adını alamıyor" Ben şu hata geldi Windows ile

C:\Users\Gregory Gundersen\Documents\Research\flask-test>python run.py 
Traceback (most recent call last): 
    File "run.py", line 2, in <module> 
    from app import app 
    File "C:\Users\Gregory Gundersen\Documents\Research\flask-test\app\__init__.py 
", line 1, in <module> 
    from flask import Flask 
    File "C:\Python27\lib\site-packages\flask\__init__.py", line 21, in <module> 
    from .app import Flask, Request, Response 
    File "C:\Python27\lib\site-packages\flask\app.py", line 26, in <module> 
    from . import json 
    File "C:\Python27\lib\site-packages\flask\json.py", line 25, in <module> 
    from itsdangerous import json as _json 
    File "C:\Python27\lib\site-packages\itsdangerous.py", line 14, in <module> 
    import hmac 
    File "C:\Python27\lib\hmac.py", line 8, in <module> 
    from operator import _compare_digest as compare_digest 
ImportError: cannot import name _compare_digest 

SO questions and answers vardır, ancak bunlar OS içindir X/Django . Bu sorunu daha önce PC/Flask için gören veya çözen var mı?

+0

Projenizle birlikte bir virtualenv kullanıyor musunuz? Daha fazla bilgi [flask için kurulum belgeleri] (http://flask.pocoo.org/docs/0.10/installation/) – Doobeh

+0

@ Doobeh, teşekkürler. Yapmamıştım 'distrib_setup.py' dosyasını çalıştırmayı denedim, ancak bu sayfayı 'easy_install' ve' pip' install yüklemek için kullandım. Sadece 'pip' kullandığımda, başka bir hata alıyorum: 'C: \ Python27 \ lib \ distutils \ __ init__.py:14: UserWarning: Virtualenv% s 'deki paketinin sistemle aynı konumda olduğunu gösteriyor distutils? "Virtualenv paketi% s 'de paketlemek, sistem dağıtıcıları ile aynı konumda mı görünüyor?"). – gwg

+0

Tuhaf bir hata gibi görünüyor - Python ile ilk kez mi çalışıyorsunuz? Python'u kaldırmanın daha kolay olup olmadığını merak ediyorum - sonra [ActiveState Python] (http://www.activestate.com/activepython/downloads) gibi daha önce paketlenmiş bir çözüm deneyin. it) pip içerir ve çevre yolunu doğru şekilde ayarlar (bunun yerine elle yapmanız gerekir). – Doobeh

cevap

12

issue 21306 (backporting hmac.compare_digest to 2.7) için yapılan değişiklikler yarım var gibi görünüyor.

Sizin hmac modül hatları vardır: Üstteki

from operator import _compare_digest as compare_digest 

ancak sys.version_info Python 2.7.6 çalıştıran gösterir; Bizim hızlı sohbet oturumunu alıntı: Sahip

Me: Next simple check:

import sys 
print(sys.version_info) 

You: sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0)

hmac versiyonu yukarı Ancak Python 2.7.7 içindir ve!

Python'unuzu yeniden yüklemek isteyeceksiniz; 2.7.8'i indirin ve standart kütüphane dosyalarınız için doğru ikili çalıştırılabilir olduğundan emin olmak için yeniden yükleyin.

+0

Bu, işte kaleme aldığım eski bir PC'nin ciddi yak tıraşını gerektirdi; Yardım etmek için sohbet ettiğiniz için teşekkürler. Python 2.7 ve Python 2.6'yı makineden kaldırdıktan sonra, 'sys.executable' ın Python'un Entegre dağıtımına işaret ettiğini fark ettim, Python'un bu sürümünü de kaldırdım, Python 2.7.8'i yeniden yükledim ve sonra sys. version_info'nun "micro" özelliği 8 idi ve ikili doğruydu. Flask sunucusu şimdi başlıyor. Teşekkürler! – gwg

+0

Sadece 2.7.9'da aynı problem vardı, ama daha yakından incelendiğinde, eşzamanlı olarak yüklenmiş olan üç 2.7 sürümü vardı. Hemen itfaiyecinin baltasını kırıp geçiriyorum .... –

+0

Ayrıca, 2.7.9'da da aynı sorun vardı, yeniden yüklemeyi denedim ama işe yaramadı. Sonra C: /Python27/Python27.dll kaldırıldıktan sonra hala orada olduğunu fark ettim. Onu sildim, Python'u tekrar kurdum ve şimdi çalışıyor. – Conrado

3

Bu, virtualenv'inizi yeniden oluşturmadan python'u güncellediğinizde oluşabilir. Bu durumda, virtualenv'inizi yeniden oluşturun.