py-bcrypt 在 win 7 64 位 python 上安装

问题描述 投票:0回答:7

尝试在win7上安装py-bcrypt。 Python 是 64 位的。第一个错误无法找到 vcvarsall.bat。谷歌了一下得知我需要安装 mingw。现在安装了这个

C:\tools\python_modules\py-bcrypt-0.2>python setup.py build -c mingw32
running build
running build_py
running build_ext
building 'bcrypt._bcrypt' extension
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Ic:\Python27\include -Ic:\Python27\PC -c bcrypt/bcrypt_python.c -o b
d\temp.win-amd64-2.7\Release\bcrypt\bcrypt_python.o
bcrypt/bcrypt_python.c:29:26: error: expected declaration specifiers or '...' before 'u_int8_t'
bcrypt/bcrypt_python.c:29:38: error: expected declaration specifiers or '...' before 'u_int16_t'
bcrypt/bcrypt_python.c:29:49: error: expected declaration specifiers or '...' before 'u_int8_t'
bcrypt/bcrypt_python.c: In function 'bcrypt_encode_salt':
bcrypt/bcrypt_python.c:56:2: error: too many arguments to function 'encode_salt'
bcrypt/bcrypt_python.c:29:6: note: declared here
error: command 'gcc' failed with exit status 1

不知道下一步该做什么。我想我不会使用 bcrypt 并尝试其他东西。还有其他建议吗?

python c gcc
7个回答
7
投票

有一个适用于 Windows 的 py-bcrypt 编译版本。您可以访问https://bitbucket.org/alexandrul/py-bcrypt/downloads下载.exe文件并安装。


3
投票

我查看了 bcrypt 源代码,但无法弄清楚为什么会出现错误(目前手头没有 Windows 系统可供测试)。虽然查看 pybcrypt issue tracker,它看起来似乎还有其他 Windows 编译问题,所以可能不仅仅是你。但据猜测,通过 extra_compile_args 将“--std=C99”添加到 gcc 参数可能至少可以修复一些错误。

除此之外,还有几种选择 -

  • Bcryptor 是另一个 C 扩展 bcrypt 实现,可以为您的系统进行编译。

  • Passlib是一个通用的密码哈希库。虽然它依赖 bcryptor/pybcrypt 来提供 bcrypt 支持,但它内置了对许多可能适合您的其他密码哈希的支持 - 例如 SHA512-CryptPBKDF2-HMAC-SHA512

  • Cryptaulous 是另一个通用密码哈希库。在 Windows 上,它提供 BCrypt 和 PBKDF2-HMAC-SHA512 密码哈希值。 (我会直接链接到这些,但文档不允许我这样做)


3
投票

我在尝试使用 VS2012 在 Windows 7 上安装(通过 pip)py-bcrypt 时偶然发现了这个相当旧的线程。显然,这仍然不起作用(我还收到“缺少 vcvars.bat”错误)。

有一个专门用于 py-bcrypt 的 Windows 分支,名为 py-bcrypt-w32,我可以使用它安装,没有任何问题

pip install py-bcrypt-w32

2
投票

我遇到了同样的问题,我通过应用此链接中找到的补丁来修复它:

http://code.google.com/p/py-bcrypt/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary&groupby=&sort=&id= 1

py-bcrypt_11.补丁

必须手动应用。

从该线程来看,问题的根源是

根据 http://groups.google.com/group/mpir-devel/msg/2c2d4cc7ec12adbb(在各种 Windows 操作系统、cygwins、mingw 等下定义的标志)最好使用 _WIN32 而不是 _MSC_VER,连同从 bzero 到 memset 的更改,这可以在 MSVC 和 MingW32 下编译。

希望有帮助!


0
投票

假设你使用的是mingw64,你应该将ifdefs上_WIN32中的_MSC_VER更改为bcrypt.c,bcrypt_python.c和pybc_blf.h


0
投票

我在 python 3.4.1 中遇到了同样的问题,之前的答案都不起作用。我最终让 Visual Studio 2010 64 位编译器正常工作,因此 cryptaclar 和 py-bcrypt 都通过 easy_install 安装。在这里查看我的详细答案:https://stackoverflow.com/a/27033824/3800244


0
投票

现在是 2016 年了,我也遇到了同样的问题。直接从 https://bitbucket.org/alexandrul/py-bcrypt/downloads 下载轮子,然后运行以下

pip install <whl-file>
© www.soinside.com 2019 - 2024. All rights reserved.