Установка скрипта пакета Python с Python 3.6

Я пытался установить пакет Python scrypt на свой ноутбук с 64-битной Windows, потому что он требуется для другого пакета, который я хочу использовать. Для этого же пакета также требуется Python 3.6, поэтому на моем компьютере установлены как Python 2.7, так и 3.6, и я использую pip и pip3, чтобы различать их. При выполнении pip install scrypt все устанавливается нормально, но при использовании pip3 install scrypt я получаю следующую ошибку:

scrypt-1.2.0/lib/crypto\crypto_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

Затем я решил эту ошибку, изменив следующий код в 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-Win64\lib']
        includes = ['c:\OpenSSL-Win64\include', 'scrypt-windows stubs/include']
    else:
        library_dirs = ['c:\OpenSSL-Win32\lib']
        includes = ['c:\OpenSSL-Win32\include', 'scrypt-windows-stubs/include']

просто чтобы библиотеки были 64-битными

library_dirs = ['c:\OpenSSL-Win64\lib']
includes = ['c:\OpenSSL-Win64\include', 'scrypt-windows

но это еще раз дает ошибку:

LINK : fatal error LNK1181: cannot open input file 'libeay32.lib'

После этого я сдался и пришел сюда, чтобы спросить, что делать. Как заставить scrypt работать с Python 3.6 в Windows?


person vwos    schedule 14.12.2017    source источник


Ответы (2)


Согласно информации репозитория, пакет scrypt доступен только для версий Python до 3.5 для Windows в предварительно скомпилированном виде. Я предполагаю, что он отлично работает на 2.7, потому что он не пытается скомпилировать двоичные части с нуля, но на 3.6 это необходимо, и у вас нет установленных частей, которые ему нужны.

Такая ошибка вызывает разочарование, но если сопровождающий пакета не захочет предоставить готовый пакет для версии 3.6, вам придется бороться за его сборку самостоятельно.

person Rob Snyder    schedule 14.12.2017

Согласно инструкциям здесь: https://stackoverflow.com/a/39270114/150851

Вам нужно установить OpenSSL-Win64 1.0.2n отсюда (не облегченная версия):

http://slproweb.com/products/Win32OpenSSL.html

Затем запустите python setup.py install и все должно заработать.

person Jonno_FTW    schedule 23.01.2018