Проблема при установке pysqlcipher3 - PullRequest
0 голосов
/ 01 апреля 2019

Так что, даже если pip install pysqlcipher3 сработало, вернулось Successfully installed pysqlcipher3, но это не так.

Судя по моим исследованиям, это обычная проблема для пользователей Windows, пытающихся установить Sqlcipher.

Попытка # 1

Сначала я пытаюсь загрузить pysqlcipher3 с github, собрать и установить его вручную через cmd (используя python setup.py build и python seetup.py install).

После выполнения python3 setup.py build я получил некоторую ошибку (не хватает нескольких требований, отсутствие OPENSSL_CONF в переменной среды ... и т. Д.), Но я исправил большинство из них.

Однако я застрял с этой ошибкой:

fatal error C1083: Cannot open include file: 'sqlcipher/sqlite3.h': No such file or directory.

Попытка № 2

Я где-то читал (я думаю), что мне нужно установить SQLCipher перед установкой PySqlCipher3 .

После проверки я обнаружил, что должен либо заплатить, чтобы получить готовый исполняемый файл, либо собрать его сам.

Поэтому я попытался собрать его самостоятельно, следуя этому руководству .

После установки всех требований и после шагов я захожу в другой тупик. На предыдущем шаге (шаг № 6) при выполнении nmake /f Makefile.msc я получил эту ошибку:

fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory


Мой вопрос:

  1. Я прочитал, что мне нужно libsqlcipher, что может быть проблемой. Где я могу найти его (ссылка на исполняемый файл предпочтительнее).
  2. Как решить эту проблему в моей первой попытке ?
  3. Как я могу решить эту проблему во время второй попытки ?

Моя цель: Установить и работать pysqlcipher3.


РЕДАКТИРОВАТЬ 1 - решена Попытка № 2 только для достижения другой проблемы

Похоже, мне не хватало некоторых функций и инструментов C ++ в Visual Studio. Таким образом, с помощью установщика Visual Studio Community я загружаю и устанавливаю базовые компоненты C ++, и это исправляет ошибку.

Я получил еще одну ошибку, которую я исправил, скопировав папку OpenSSL-Win64\include в C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include.

Однако теперь я застрял с этой ошибкой:

sqlite3.c(77701): warning C4389: '!=': signed/unsigned mismatch
    lib.exe /NOLOGO /MACHINE:x64 /OUT:libsqlite3.lib sqlite3.lo 
    echo EXPORTS > sqlcipher.def
    dumpbin /all libsqlite3.lib  | tclsh .\tool\replace.tcl include "^\s+1 _?(sqlite3(?:session|changeset|changegroup|rebaser)?_[^@]*)(?:@\d+)?$" \1  | sort >> sqlcipher.def
    link.exe /DEBUG   /NOLOGO /MACHINE:x64  /DLL /DEF:sqlcipher.def /OUT:sqlcipher.dll sqlite3.lo sqlite3res.lo  
   Creating library sqlcipher.lib and object sqlcipher.exp
sqlite3.lo : error LNK2019: unresolved external symbol RAND_bytes referenced in function sqlcipher_openssl_random
sqlite3.lo : error LNK2019: unresolved external symbol RAND_add referenced in function sqlcipher_openssl_add_random
sqlite3.lo : error LNK2019: unresolved external symbol OBJ_nid2sn referenced in function sqlcipher_openssl_get_cipher
sqlite3.lo : error LNK2019: unresolved external symbol EVP_MD_size referenced in function sqlcipher_openssl_get_hmac_sz
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CIPHER_nid referenced in function sqlcipher_openssl_get_cipher
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CIPHER_block_size referenced in function sqlcipher_openssl_get_block_sz
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CIPHER_key_length referenced in function sqlcipher_openssl_get_key_sz
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CIPHER_iv_length referenced in function sqlcipher_openssl_get_iv_sz
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CipherInit_ex referenced in function sqlcipher_openssl_cipher
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CipherUpdate referenced in function sqlcipher_openssl_cipher
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CipherFinal_ex referenced in function sqlcipher_openssl_cipher
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_new referenced in function sqlcipher_openssl_cipher
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_free referenced in function sqlcipher_openssl_cipher
sqlite3.lo : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_set_padding referenced in function sqlcipher_openssl_cipher
sqlite3.lo : error LNK2019: unresolved external symbol EVP_sha1 referenced in function sqlcipher_openssl_get_hmac_sz
sqlite3.lo : error LNK2019: unresolved external symbol EVP_sha256 referenced in function sqlcipher_openssl_get_hmac_sz
sqlite3.lo : error LNK2019: unresolved external symbol EVP_sha512 referenced in function sqlcipher_openssl_get_hmac_sz
sqlite3.lo : error LNK2019: unresolved external symbol EVP_get_cipherbyname referenced in function sqlcipher_openssl_activate
sqlite3.lo : error LNK2019: unresolved external symbol PKCS5_PBKDF2_HMAC referenced in function sqlcipher_openssl_kdf
sqlite3.lo : error LNK2019: unresolved external symbol HMAC_CTX_new referenced in function sqlcipher_openssl_hmac
sqlite3.lo : error LNK2019: unresolved external symbol HMAC_CTX_free referenced in function sqlcipher_openssl_hmac
sqlite3.lo : error LNK2019: unresolved external symbol HMAC_Init_ex referenced in function sqlcipher_openssl_hmac
sqlite3.lo : error LNK2019: unresolved external symbol HMAC_Update referenced in function sqlcipher_openssl_hmac
sqlite3.lo : error LNK2019: unresolved external symbol HMAC_Final referenced in function sqlcipher_openssl_hmac
sqlcipher.dll : fatal error LNK1120: 24 unresolved externals
...