gpt4 book ai didi

python - 如何在 Windows 7 上为 python 2.7 编译和安装 pysqlcipher

转载 作者:可可西里 更新时间:2023-11-01 09:28:47 25 4
gpt4 key购买 nike

我最近在 Windows 7 上安装了 Python 2.7。我还为 python、MinGW 安装了 setuptools 和 pip,Visual C++ for Python和 OpenSSL 在我的试验过程中。在我的 %PATH% 中都有条目,我有环境变量 VS90COMNTOOLS 和 VS100COMNTOOLS 指向“C:\Users\username\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\bin”。

我尝试了几种不同的安装方法。我将在下面概述每一个。 (所有这些都是从提升的命令提示符下运行的。)

  1. 下载源码并编译。

    python setup.py 安装

这给出了输出:

running install
running build
running build_py
running build_ext
building 'pysqlcipher._sqlite' extension
error: Unable to find vcvarsall.bat
  1. 使用 MinGW 编译源代码

因为在安装 VS for Python 之后我仍然得到同样的错误,我决定尝试:

setup.py install build --compiler=mingw32

输出:

running install
running build
running build_py
running build_ext
building 'pysqlcipher._sqlite' extension
D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c src/module.c -o build\temp.win32-2.7\Release\src\module.o
D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c src/connection.c -o build\temp.win32-2.7\Release\src\connection.o
src/connection.c: In function '_pysqlite_final_callback':
src/connection.c:787:15: warning: variable 'aggregate_class' set but not used [-Wunused-but-set-variable]
PyObject* aggregate_class;
^
D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c src/cursor.c -o build\temp.win32-2.7\Release\src\cursor.o
src/cursor.c: In function 'pysqlite_cursor_dealloc':
src/cursor.c:129:9: warning: variable 'rc' set but not used [-Wunused-but-set-variable]
int rc;
^
D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c src/cache.c -o build\temp.win32-2.7\Release\src\cache.o
D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c src/microprotocols.c -o build\temp.win32-2.7\Release\src\microprotocols.o
D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c src/prepare_protocol.c -o build\temp.win32-2.7\Release\src\prepare_protocol.o

D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c src/statement.c -o build\temp.win32-2.7\Release\src\statement.o
src/statement.c: In function 'pysqlite_statement_dealloc':
src/statement.c:408:9: warning: variable 'rc' set but not used [-Wunused-but-set-variable]
int rc;
^
D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c src/util.c -o build\temp.win32-2.7\Release\src\util.o
D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c src/row.c -o build\temp.win32-2.7\Release\src\row.o
D:\Developer\MinGW\bin\gcc.exe -mdll -O -Wall -DMODULE_NAME=\"pysqlcipher.dbapi2\" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABL
E_RTREE=1 -DSQLITE_ENABLE_LOAD_EXTENSION=1 -DSQLITE_HAS_CODEC=1 -DSQLITE_TEMP_STORE=2 -Iamalgamation -ID:\Developer\Pyth
on27\include -ID:\Developer\Python27\PC -c amalgamation\sqlite3.c -o build\temp.win32-2.7\Release\amalgamation\sqlite3.o

amalgamation\sqlite3.c:13654:26: fatal error: openssl/rand.h: No such file or directory
#include <openssl/rand.h>
^
compilation terminated.
error: command 'D:\\Developer\\MinGW\\bin\\gcc.exe' failed with exit status 1
  1. 我安装了 OpenSSL 并再次尝试。仍然是相同的输出。我还安装了 pyopenssl。还是一样的错误。

  2. 我试着走简单的路:

    easy_install pysqlcipher

    pip 安装 pysqlcipher

这些还提示找不到'openssl/rand.h'

有没有人知道如何解决这个问题,以便我可以为 Windows 编译这个包?谢谢!

最佳答案

方法一

安装 Microsoft Visual C++ Compiler for Python 2.7

更新点

python -m pip install -U pip

更新设置工具

pip install -U setuptools

使用pip安装pysqlcipher

pip install pysqlcipher

pip 应该能够找到您安装的 Visual C++ 编译器,并编译所需的扩展。

如果由于某种原因您不能使用 pip,请尝试下面的方法 2。


方法二

查看您的 setup.py 如果它是一个较旧的包,它可能正在导入 distutils.core.setup() 而不是 setuptools.setup()

我遇到这个问题(2015 年)时综合考虑了这些因素:

  1. 用于 Python 2.7 的 Microsoft Visual C++ 编译器来自 http://aka.ms/vcpython27

  2. 使用 distutils.core.setup()

    的旧包
  3. 尝试执行 python setup.py build 而不是使用 pip

如果您使用最新版本的 pip,它会强制 (monkeypatch) 包使用 setuptools,即使它的 setup.py 调用了 distutils。但是,如果您不使用 pip,而只是执行 python setup.py build,构建过程将使用 distutils.core.setup(),它不会了解编译器安装位置。

第 1 步:安装 Microsoft Visual C++ Compiler for Python 2.7

第 2 步:打开相应的 Visual C++ 2008 命令提示符

打开“开始”菜单或“开始”屏幕,然后搜索“Visual C++ 2008 32 位命令提示符”(如果您的 Python 是 32 位)或“Visual C++ 2008 64 位命令提示符”(如果您的 Python 是 64 位) -少量)。运行。命令提示符应在标题栏中显示 Visual C++ 2008 ...。

第三步:设置环境变量

在您刚刚打开的命令提示符中设置这些环境变量。

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

引用 http://bugs.python.org/issue23246

第 4 步:构建和安装

cd 到您要构建的包,然后运行 ​​python setup.py build,然后 python setup.py install。如果你想安装到 virtualenv 中,请在构建之前激活它。

关于python - 如何在 Windows 7 上为 python 2.7 编译和安装 pysqlcipher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27154476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com