python - 如何为 Windows 构建 SQL Cipher Python 绑定(bind)

标签 python python-3.x distutils sqlcipher pysqlcipher

我在 Windows 计算机上为 SQL 密码构建 Python 绑定(bind)时遇到问题。我已经成功为 Macintosh 构建了 python 绑定(bind)。我想在 Mac 和 PC 上使用我的 python 脚本。

我是 python 新手,不完全理解它失败的原因,但我开始尝试调试 setup.py 脚本,发现错误位于 build_extension(self , ext) 第 147 行的方法。

我构建的步骤:

  1. https://github.com/rigglemania/pysqlcipher3
  2. https://github.com/sqlcipher/sqlcipher
  3. http://www.jerryrw.com/howtocompile.php

我克隆了上面的存储库,并按照 Jerry 的说明构建 sqlcipher。我将 sqlite3.c 和 sqlite3.h 文件放入合并文件夹中,然后尝试构建合并。我收到以下错误。我尝试构建,但也失败并出现相同的错误。

错误:

running build_amalgamation
Builds a C extension using a sqlcipher amalgamation
building 'pysqlcipher3._sqlite3' extension
['path']

问题:

  1. 有什么方法可以在我的 Mac 上构建 sqlcipher 并将其用于 PC 吗? (将文件从 MAC 传输到 PC)?
  2. 有人可以帮我构建适用于 PC 的 sqlcipher3 python 绑定(bind)吗?

我是 python 新手,任何帮助将不胜感激。

最佳答案

参见https://github.com/rigglemania/pysqlcipher3

1) 安装免费的 VS 2015 社区版

注意:确保选择所有 GCC 选项(VC++、C++ 等)。如果您不确定,请选择所有选项。

2) 从 https://slproweb.com/products/Win32OpenSSL.html 安装预构建的 OpenSSL 二进制文件(Win32 OpenSSL v1.0.2d 或更高版本)

3) 确认环境变量中的OPENSSL_CONF环境变量设置正确。请参阅http://www.computerhope.com/issues/ch000549.htm

注意:这不应该是根 openssl 路径(例如:C:/openssl-Win32),而应该是配置文件的路径(例如:C:/openssl-Win32/bin/openssl.cfg)

4) 将 (C:/OpenSSL-Win32/include/openssl) 目录中的 openssl 文件夹复制到 VC include 目录(例如:C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include)

注意:确认以下路径存在(../../VC/include/openssl/aes.h)

5) 安装Python 3.5(32位)。

注意:如果您安装了 python 64 位,则可能需要在安装 python 32 位之前将其卸载。

6) 使用 SQL Cipher 3 合并,或者您可以按照本教程 http://www.jerryrw.com/howtocompile.php 编译最新的 SQL Cipher 合并。 .

7) 单击开始、运行、cmd。在 CMD 提示符中导航到您 checkout 此存储库的文件夹。运行“python setup.py build_amalgamation”

8) 运行“python setup.py install”。通过尝试解密数据库来测试新库。

注意:如果解密失败,请检查您是否拥有正确的合并文件。

关于python - 如何为 Windows 构建 SQL Cipher Python 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33618565/

相关文章:

python - 如何尽可能多地输入 x 和 y?

python - 当一只正在移动的 Python turtle 靠近另一只 turtle 时,阻止它

Python 通过 JSON 迭代数据

python - 如何通过 pip 包名称使用 setuptools 指定两个替代要求?

python - TensorFlow 数据集 API 中的 IDE 断点映射 py_function?

python - 使用递归组合字典中的值

python - 我在使用 Selenium 时不断收到 "name"错误。我究竟做错了什么?

python - Python 3.5 中协程和 future /任务之间的区别?

python - 使 python pip 找出要下载的正确包版本

python - 如何从 distutils 二进制发行版中剥离源代码?