Так что, даже если 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
Мой вопрос:
- Я прочитал, что мне нужно
libsqlcipher
, что может быть проблемой. Где я могу найти его (ссылка на исполняемый файл предпочтительнее).
- Как решить эту проблему в моей первой попытке ?
- Как я могу решить эту проблему во время второй попытки ?
Моя цель: Установить и работать 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