2015-05-26 68 views
1

我試圖創建一個使用Enferno framework小燒瓶應用程序,但是當我嘗試註冊用戶我得到一個似乎由passlib庫生成的錯誤。我無法理解這是我做過的事情還是圖書館本身出現錯誤。「類型錯誤:hashpw()參數1必須海峽,而不是字節」試圖註冊燒瓶安全用戶時

以下是完整回溯:

Traceback (most recent call last): 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1836, in __call__ 
     return self.wsgi_app(environ, start_response) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1820, in wsgi_app 
     response = self.make_response(self.handle_exception(e)) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1403, in handle_exception 
     reraise(exc_type, exc_value, tb) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise 
     raise value 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1817, in wsgi_app 
     response = self.full_dispatch_request() 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1477, in full_dispatch_request 
     rv = self.handle_user_exception(e) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1381, in handle_user_exception 
     reraise(exc_type, exc_value, tb) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise 
     raise value 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask/app.py", line 1475, in full_dispatch_request 
     rv = self.dispatch_request() 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_debugtoolbar/__init__.py", line 125, in dispatch_request 
     return view_func(**req.view_args) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_security/decorators.py", line 205, in wrapper 
     return f(*args, **kwargs) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_security/views.py", line 117, in register 
     user = register_user(**form.to_dict()) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_security/registerable.py", line 28, in register_user 
     kwargs['password'] = encrypt_password(kwargs['password']) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/flask_security/utils.py", line 151, in encrypt_password 
     return _pwd_context.encrypt(signed) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/context.py", line 2495, in encrypt 
     return self._get_record(scheme, category).encrypt(secret, **kwds) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/utils/handlers.py", line 558, in encrypt 
     self.checksum = self._calc_checksum(secret) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/handlers/bcrypt.py", line 285, in _calc_checksum 
     return self._calc_checksum_backend(secret) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/utils/handlers.py", line 1458, in _calc_checksum_backend 
     return self._calc_checksum_backend(secret) 
    File "/home/el3k0n/.local/lib/python3.4/site-packages/passlib/handlers/bcrypt.py", line 333, in _calc_checksum_pybcrypt 
     hash = _bcrypt.hashpw(secret, config) 
TypeError: hashpw() argument 1 must be str, not bytes 
+0

您是否在使用Python 3,我建議您可以使用flask-security提交bugreport。 – Timo

+0

看起來這可能源於passlib 1.6.2及更早版本中的已知錯誤。更新到passlib 1.6.4(2015-7-25發佈)應該可以解決這個問題。 –

回答

1

我只是碰到了這一點。原來,我在我的virtualenv中安裝了bcryptpython-bcryptpasslib.hash.bcrypt查看bcrypt上的哪個版本。通過刪除python-bcrypt,我能夠停止拋出這個錯誤。

+0

謝謝,這也幫助我;)雖然我不得不用bcrypt(bcrypt,python-bcrypt和flask-bcrypt)卸載所有東西, – anks

相關問題