python - 安装 pysqlcipher3 windows
问题描述
我需要在我的 Windows 计算机上安装 pysqlcipher,但是当我这样做时:
pip install pysqlcipher
我有:
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.
我试图用 git 安装它,我有:
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
我用python3试过了,但它是一样的。我认为它就像这样的问题: 安装 pysqlcipher3 时出现问题, 但我没有成功解决问题
有人可以帮助我吗?
解决方案
安装 tlc (我用的是 8.6)
https://www.activestate.com/products/tcl/downloads/
(tclsh*.exe) 在 PATH 中可用。( tclsh C:\Tcl\bin\tclsh.exe
)
安装 VISUAL STUDIO(添加)和 VISUAL STUDIO C++ Build
去微软
安装 OpenSSL x64 或 x32(我使用 x64)
https://slproweb.com/products/Win32OpenSSL.html
添加到路径
x64
OPENSSL_CONF C:\Program Files\OpenSSL-Win64\bin\openssl.cfg
x32
OPENSSL_CONF C:\Program Files(x86)\OpenSSL-Win32\bin\openssl.cfg
在文件夹中
C:\Program Files\OpenSSL-Win64\lib
保存副本
libcrypto.def
和libcrypto.lib
并重命名为
libeay32.def
和libeay32.lib
保存副本
libssl.def
和libssl.lib
并重命名为
ssleay32.def
和ssleay32.lib
复制文件夹
C:\Program Files\OpenSSL-Win64\include\openssl
至
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include
下载 sqlcipher
https://github.com/sqlcipher/sqlcipher
在根 sqlcipher 更改Makefile.msc
这个
TCC = $(TCC) -DSQLITE_TEMP_STORE=1
改成
TCC = $(TCC) -DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC -I"C:\Program Files\OpenSSL-Win64\include"
下一个
# 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
改成
# 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 原生工具命令 (VS)
path\to\sqlcipher>
nmake /f Makefile.msc clean
nmake /f Makefile.msc
下载pysqlcipher3
https://github.com/rigglemania/pysqlcipher3
创建文件夹
/amalgamation
在/pysqlcipher3
复制两个文件/sqlcipher
sqlite3.c
sqlite3.h
至/pysqlcipher3/amalgamation
下载sqlite-amalgamation
https://sqlite.org/download.html
我正在使用https://sqlite.org/2021/sqlite-amalgamation-3340100.zip
创建文件夹
/pysqlcipher3/src/python3/sqlcipher
复制4个文件sqlite-amalgamation-3340100.zip
shell.c sqlite3.c sqlite.h sqliteext.h
至
/pysqlcipher3/src/python3/sqlcipher
x64 原生工具命令 (VS)
path\to\pysqlcipher3>
setup.py clean
enter code here
setup.py build_amalgamation
setup.py install
推荐阅读
- c++ - 如果我给出了以 10 为底的数字并将相同的数字转换为我们需要找到的任何底数,我如何找到数字的底数
- asp.net - 如果.net core中的用户的数据库中已经存在,如何从选择中删除选项
- hyperledger-fabric - 如何使用fabric sdk初始化fabric CA
- android - Android:当键盘出现时如何滚动滚动视图以显示下一个字段
- azure-devops - 使用 OAuth 和 PowerShell 更新 Azure DevOps Wiki 页面
- java - 如何在杰克逊的注释 JSON 属性中使用正则表达式
- javascript - 从 Javascript / Typescript 中的数组中删除子对象重复项
- python - 唯一约束违规
- c# - xml 的流利断言
- java - 设计一个系统以更快地检索和修改而不会给堆内存带来负担