首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Windows 7上编译和安装python2.7的pysqlciphforpython2.7

如何在Windows 7上编译和安装python2.7的pysqlciphforpython2.7
EN

Stack Overflow用户
提问于 2014-11-26 16:42:07
回答 2查看 3.4K关注 0票数 3

我最近在Windows7上安装了Python2.7,在我的实验过程中还为python、MinGW、面向Python的可视化C++和OpenSSL安装了setuptools和pip。它们都在我的%PATH%中有条目,我的环境变量VS90COMNTOOLS和VS100COMNTOOLS指向Python9.0\VC\bin的VS90COMNTOOLS C++。

我尝试过几种不同的方法来安装这个。我将概述以下每一项内容。(所有这些都是从提升的命令提示符中运行的。)

  1. 下载源代码并编译。 python setup.py安装

这给出了输出:

代码语言:javascript
复制
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之后,我仍然得到了相同的错误,所以我决定尝试:

代码语言:javascript
复制
setup.py install build --compiler=mingw32

输出:

代码语言:javascript
复制
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密码 pip安装pip密码

他们还抱怨说找不到'openssl/rand.h‘

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-19 22:25:01

方法1

安装MicrosoftVisualPython2.7的C++编译器

更新pip

代码语言:javascript
复制
python -m pip install -U pip

更新设置工具

代码语言:javascript
复制
pip install -U setuptools

使用pip安装pip密码

代码语言:javascript
复制
pip install pysqlcipher

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

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

方法2

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

我(在2015年)结合了这些因素进行了研究:

  1. 来自http://aka.ms/vcpython27的MicrosoftVisualPython2.7编译器
  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:安装MicrosoftVisualPython2.7的C++编译器

步骤2:打开适当的VisualC++ 2008命令提示符

打开“开始”菜单或“开始”屏幕,搜索“VisualC++ 2008 32位命令提示符”(如果您的python是32位)或“VisualC++ 2008 64位命令提示符”(如果您的python是64位)。快跑啊。命令提示符应该是VisualC++ 2008 ..。在标题栏里。

步骤3:集环境变量

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

代码语言:javascript
复制
SET DISTUTILS_USE_SDK=1
SET MSSdk=1

参考http://bugs.python.org/issue23246

步骤4:构建和安装

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

票数 1
EN

Stack Overflow用户

发布于 2014-11-26 17:53:17

这是我所面临的最常见的问题。但我用用于Visual 2012的pytools解决了这个问题。在安装pytools之后,在new中添加了一个新的项目类别

选择您的python项目。从项目解决方案资源管理器中添加python环境,右键单击它并选择"Add /.“。将出现一个带有复选框的窗口,选择您当前的python版本(安装在您的系统中)。

将添加类似的环境(这里是Python2.7)。再次右键单击它并选择“”选项。

窗口与pip和easy_install选项一起上升。现在,只需键入您的包名例如。比目斯。以管理员身份检查运行。单击确定按钮

控制台输出确定您的包安装是否完美。

希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27154476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档