Python 无法在Windows上生成sqlcipher3

Python 无法在Windows上生成sqlcipher3,python,c,sqlite,sqlcipher,Python,C,Sqlite,Sqlcipher,构建sqlcipher后,在根文件夹中复制sqlite3.c和sqlite3.h,我正在尝试构建(在Windows 10上,Python 3.9.0): 这里是Blob.c中的行(第638行是模块名称“.Blob”,): 有人能帮我继续吗? 谢谢我今天也遇到了同样的问题,设置几乎完全相同。为了成功编译sqlcipher3,我需要做两个修改: 模块名称预编译器定义的内容在setup.py的第38行中设置。此处调用的函数quote_参数,用于区分Windows和其他平台。在Windows上,引号字符

构建sqlcipher后,在根文件夹中复制sqlite3.c和sqlite3.h,我正在尝试构建(在Windows 10上,Python 3.9.0):

这里是Blob.c中的行(第638行是
模块名称“.Blob”,
):

有人能帮我继续吗?
谢谢

我今天也遇到了同样的问题,设置几乎完全相同。为了成功编译sqlcipher3,我需要做两个修改:

  • 模块名称
    预编译器定义的内容在
    setup.py
    的第38行中设置。此处调用的函数
    quote_参数
    ,用于区分Windows和其他平台。在Windows上,引号字符用反斜杠转义。至少对于MSVC2019而言,这似乎是不正确的。要修复它,只需删除第35行的Windows特定内容

  • OpenSSL的库名称在版本1.1.0中已更改。如果您使用的是较新版本,则可能必须将库名称从
    libeay32.lib
    更改为
    libcrypto.lib
    ,或在系统上调用库的任何内容(第132行)。此外,您可能需要设置环境变量
    OPENSSL\u CONF
    ,以帮助构建脚本在系统上查找OPENSSL


  • 有了这两个小的修改,构建过程运行得很好。

    我今天遇到了同样的问题,设置几乎完全相同。为了成功编译sqlcipher3,我需要做两个修改:

  • 模块名称
    预编译器定义的内容在
    setup.py
    的第38行中设置。此处调用的函数
    quote_参数
    ,用于区分Windows和其他平台。在Windows上,引号字符用反斜杠转义。至少对于MSVC2019而言,这似乎是不正确的。要修复它,只需删除第35行的Windows特定内容

  • OpenSSL的库名称在版本1.1.0中已更改。如果您使用的是较新版本,则可能必须将库名称从
    libeay32.lib
    更改为
    libcrypto.lib
    ,或在系统上调用库的任何内容(第132行)。此外,您可能需要设置环境变量
    OPENSSL\u CONF
    ,以帮助构建脚本在系统上查找OPENSSL


  • 通过这两个小修改,构建过程运行良好。

    谢谢!很好用!我很高兴能帮上忙!非常感谢。很好用!我很高兴能帮上忙!
    C:\dev\py\sqlcipher3# setup.py build_static build
    running build_static
    Builds a C extension using a sqlcipher amalgamation
    building 'sqlcipher3._sqlite3' extension
    C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29333\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DMODULE_NAME="sqlcipher3.dbapi2" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_STAT4=1 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_SOUNDEX=1 -DSQLITE_USE_URI=1 -DSQLITE_TEMP_STORE=2 -DSQLITE_MAX_VARIABLE_NUMBER=250000 -DSQLITE_DEFAULT_PAGE_SIZE=4096 -DSQLITE_DEFAULT_CACHE_SIZE=-8000 -Dinline=__inline -I. -IC:\OpenSSL-Win64\include -IC:\Python\include -IC:\Python\include -IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29333\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt /Tc.\sqlite3.c /Fobuild\temp.win-amd64-3.9\Release.\sqlite3.obj
    sqlite3.c
    .\sqlite3.c(24335): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29333\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DMODULE_NAME="sqlcipher3.dbapi2" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS3_PARENTHESIS=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_STAT4=1 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_SOUNDEX=1 -DSQLITE_USE_URI=1 -DSQLITE_TEMP_STORE=2 -DSQLITE_MAX_VARIABLE_NUMBER=250000 -DSQLITE_DEFAULT_PAGE_SIZE=4096 -DSQLITE_DEFAULT_CACHE_SIZE=-8000 -Dinline=__inline -I. -IC:\OpenSSL-Win64\include -IC:\Python\include -IC:\Python\include -IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29333\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt /Tcsrc\blob.c /Fobuild\temp.win-amd64-3.9\Release\src\blob.obj
    blob.c
    src\blob.c(178): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(359): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(386): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(408): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(421): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(421): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(439): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(439): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(508): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(536): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(550): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(550): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(574): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(574): warning C4244: 'function': conversion from 'Py_ssize_t' to 'int', possible loss of data
    src\blob.c(638): error C2017: illegal escape sequence
    src\blob.c(638): error C2224: left of '.Blob' must have struct/union type
    src\blob.c(638): error C2001: newline in constant
    src\blob.c(638): error C2059: syntax error: 'string'
    error: command 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29333\bin\HostX86\x64\cl.exe' failed with exit code 2
    
    PyTypeObject pysqlite_BlobType = {
            PyVarObject_HEAD_INIT(NULL, 0)
            MODULE_NAME ".Blob",
            .tp_basicsize = sizeof(pysqlite_Blob),
            .tp_dealloc = (destructor)pysqlite_blob_dealloc,
            .tp_as_sequence = &blob_sequence_methods,
            .tp_as_mapping = &blob_mapping_methods,
            .tp_flags = Py_TPFLAGS_DEFAULT,
            .tp_weaklistoffset = offsetof(pysqlite_Blob, in_weakreflist),
            .tp_methods = blob_methods,
    };