4

I need to install pysqlcipher on my windows computer but when I do:

pip install pysqlcipher

I have:

 Collecting pysqlcipher3
  Using cached https://files.pythonhosted.org/packages/a4/06/1d56bdec3129eff6dd54323d249784ccd90ce03c8cae7870d45e434bae77/pysqlcipher3-1.0.3.tar.gz
Building wheels for collected packages: pysqlcipher3
  Building wheel for pysqlcipher3 (setup.py) ... done
  WARNING: Legacy build of wheel for 'pysqlcipher3' created no files.
  Command arguments: 'C:\Users\Elouan\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Elouan\\AppData\\Local\\Temp\\pip-install-827zddbs\\pysqlcipher3\\setup.py'"'"'; __file__='"'"'C:\\Users\\Elouan\\AppData\\Local\\Temp\\pip-install-827zddbs\\pysqlcipher3\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\Elouan\AppData\Local\Temp\pip-wheel-jkj29o6_' --python-tag cp38
  Command output: [use --verbose to show]
  Running setup.py clean for pysqlcipher3
Failed to build pysqlcipher3
Installing collected packages: pysqlcipher3
  Running setup.py install for pysqlcipher3 ... done
Successfully installed pysqlcipher3
WARNING: You are using pip version 19.2.3, however version 20.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

I have tried to install it with git and I have:

python setup.py build
running build
running build_py
running build_ext
Builds a C extension linking against libsqlcipher library
building 'pysqlcipher3._sqlite3' extension
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DMODULE_NAME=\"pysqlcipher3.dbapi2\" -IC:\Users\Elouan\AppData\Local\Programs\Python\Python37\include -IC:\Users\Elouan\AppData\Local\Programs\Python\Python37\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include" "-IF:\Windows Kits\10\include\10.0.18362.0\ucrt" "-IF:\Windows Kits\10\include\10.0.18362.0\shared" "-IF:\Windows Kits\10\include\10.0.18362.0\um" "-IF:\Windows Kits\10\include\10.0.18362.0\winrt" "-IF:\Windows Kits\10\include\10.0.18362.0\cppwinrt" /Tcsrc\python3\module.c /Fobuild\temp.win-amd64-3.7\Release\src\python3\module.obj
module.c
C:\Users\Elouan\pysqlcipher3\src\python3\connection.h(33): fatal error C1083: Impossible d'ouvrir le fichier include : 'sqlcipher/sqlite3.h' : No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2

I tried that with python3 but it's the same. I think it's like this problem: Issue in installing pysqlcipher3 but I did not succeed to resolve the problem

Someone can help me please?

1 Answers1

2

Install tlc (i'm use 8.6)

https://www.activestate.com/products/tcl/downloads/

(tclsh*.exe) is available in the PATH.(tclsh C:\Tcl\bin\tclsh.exe)

Install VISUAL STUDIO (add) and VISUAL STUDIO C++ Build

go to microsoft

Install OpenSSL x64 or x32 (i'm use x64)

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

add to PATH

x64

OPENSSL_CONF C:\Program Files\OpenSSL-Win64\bin\openssl.cfg

x32

OPENSSL_CONF C:\Program Files(x86)\OpenSSL-Win32\bin\openssl.cfg

in folder

C:\Program Files\OpenSSL-Win64\lib

save copy

libcrypto.def and libcrypto.lib

and rename at

libeay32.def and libeay32.lib

save copy

libssl.def and libssl.lib

and rename at

ssleay32.def and ssleay32.lib

copy folder

C:\Program Files\OpenSSL-Win64\include\openssl

to

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include

Download sqlcipher

https://github.com/sqlcipher/sqlcipher

in root sqlcipher change Makefile.msc

this

TCC = $(TCC) -DSQLITE_TEMP_STORE=1

change to

TCC = $(TCC) -DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC -I"C:\Program Files\OpenSSL-Win64\include"

next

# If ICU support is enabled, add the linker options for it.
#
!IF $(USE_ICU)!=0
LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:$(ICULIBDIR)
LTLIBS = $(LTLIBS) $(LIBICU)
!ENDIF
# <</mark>>
# You should not have to change anything below this line

change to

# If ICU support is enabled, add the linker options for it.
#
!IF $(USE_ICU)!=0
LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:$(ICULIBDIR)
LTLIBS = $(LTLIBS) $(LIBICU)
!ENDIF
# <</mark>>

LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:"C:\Program Files\OpenSSL-Win64\lib\VC\static"
LTLIBS = $(LTLIBS) libcrypto64MT.lib libssl64MT.lib ws2_32.lib shell32.lib advapi32.lib gdi32.lib user32.lib crypt32.lib


# You should not have to change anything below this line

x64 Native Tools Command (VS)

path\to\sqlcipher>

nmake /f Makefile.msc clean
nmake /f Makefile.msc

Download pysqlcipher3

https://github.com/rigglemania/pysqlcipher3

create folder

/amalgamation in /pysqlcipher3

COPY TWO FILES FROM /sqlcipher

sqlite3.c sqlite3.h

TO /pysqlcipher3/amalgamation

Download sqlite-amalgamation

https://sqlite.org/download.html

i'm use https://sqlite.org/2021/sqlite-amalgamation-3340100.zip

create folder

/pysqlcipher3/src/python3/sqlcipher

copy 4 files from sqlite-amalgamation-3340100.zip

shell.c sqlite3.c sqlite.h sqliteext.h

to

/pysqlcipher3/src/python3/sqlcipher

x64 Native Tools Command (VS)

path\to\pysqlcipher3>

setup.py clean  
enter code here
setup.py build_amalgamation

setup.py install  
Monogi
  • 21
  • 3
  • I am following your steps precisely but run into errors on the last step `setup.py build_amalgamation`. It says"src\python3\cache.c(261): error C2017: illegal escape sequence" and "error C2061: syntax error: identifier 'Node'" and "error C2001: newline in constant" and "error C2224: left of '.Cache' must have struct/union type" and "error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2" – ProfP30 May 14 '22 at 13:50
  • Having just gone through the process of compiling pysqlcipher, the fix is to replace all instances of MODULE_NAME with "pysqlcipher3.dbapi2" (quotes must be included) in the files in the source folder pysqlcipher3\src\python3. I used Textcrawler Free to replace them. I used the latest versions of sqlcipher, pysqlcipher and amalgamation files. It compiles fine in the current python 3.11.4 (June 2023) and older versions. Hope this helps anyone struggling to compile it. – Andrew Smith Jun 10 '23 at 09:51