Установка скрипта пакета 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?

2 ответа

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

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

В соответствии с инструкциями здесь: /questions/39298012/ssyilka-fatalnaya-oshibka-lnk1181-ne-udaetsya-otkryit-vhodnoj-fajl-copenssl-win64liblibeay32lib/39298033#39298033

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

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

Тогда беги python setup.py install и это должно работать.

Другие вопросы по тегам