我一直在尝试在Windows 64位笔记本电脑上安装Python软件包scrypt
,因为我想使用的另一个软件包需要它。相同的软件包也需要Python 3.6,因此在我的计算机上,我同时使用Python 2.7和3.6,并使用pip
和pip3
来区分两者。执行pip install scrypt
时,所有内容都安装正常,但是使用pip3 install scrypt
时,我会收到以下错误:
scrypt-1.2.0/lib/cryptocrypto_scrypt.h(33): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
我尝试通过像这样克隆存储库来解决此问题:
$ hg clone http://bitbucket.org/mhallin/py-scrypt
$ cd py-scrypt
$ PATHTOPYTHON3 setup.py build
然后给出以下错误
scrypt-1.2.0/libcperciva/crypto/crypto_aes.c(6): fatal error C1083: Cannot open include file: 'openssl/aes.h': No such file or directory
i然后通过更改setup.py
elif sys.platform.startswith('win32'):
define_macros = [('inline', '__inline')]
libraries = ['libeay32', 'advapi32']
extra_sources = ['scrypt-windows-stubs/gettimeofday.c']
if struct.calcsize('P') == 8:
library_dirs = ['c:OpenSSL-Win64lib']
includes = ['c:OpenSSL-Win64include', 'scrypt-windows stubs/include']
else:
library_dirs = ['c:OpenSSL-Win32lib']
includes = ['c:OpenSSL-Win32include', 'scrypt-windows-stubs/include']
简单地让库是64位
library_dirs = ['c:OpenSSL-Win64lib']
includes = ['c:OpenSSL-Win64include', 'scrypt-windows
,但这再次给出了一个错误:
LINK : fatal error LNK1181: cannot open input file 'libeay32.lib'
之后,我放弃了,来到这里问该怎么办。如何使scrypt
在Windows上使用Python 3.6?
根据存储库信息,Scrypt软件包仅适用于Python版本,最高3.5 windows,用于预编译的形式。我的猜测是在2.7上正常工作,因为它不是试图从头开始编译二进制部分,但是在3.6上必须汇编二进制部分,并且您没有安装所需的作品。
这种错误令人沮丧,但是除非包装维护者想要为3.6提供预制的包裹,否则您必须自己构建它。
根据说明:https://stackoverflow.com/a/39270114/150851
您需要从这里安装OpenSSL-WIN64 1.0.2n(不是轻版本):
http://slproweb.com/products/win32openssl.html
然后运行python setup.py install
,并且应该工作。