我最近在Windows7上安装了Python2.7,在我的实验过程中还为python、MinGW、面向Python的可视化C++和OpenSSL安装了setuptools和pip。它们都在我的%PATH%中有条目,我的环境变量VS90COMNTOOLS和VS100COMNTOOLS指向Python9.0\VC\bin的VS90COMNTOOLS C++。
我尝试过几种不同的方法来安装这个。我将概述以下每一项内容。(所有这些都是从提升的命令提示符中运行的。)
这给出了输出:
running install
running build
running build_py
running build_ext
building 'pysqlcipher._sqlite' extension
error: Unable to find vcvarsall.bat因为在安装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他们还抱怨说找不到'openssl/rand.h‘
有没有人知道如何解决这个问题,这样我就可以编译这个Windows包了吗?谢谢!
发布于 2015-02-19 22:25:01
方法1
安装MicrosoftVisualPython2.7的C++编译器
更新pip
python -m pip install -U pip更新设置工具
pip install -U setuptools使用pip安装pip密码
pip install pysqlcipherpip应该能够找到您安装的Visual,并编译所需的扩展。
如果由于某些原因不能使用pip,那么请尝试下面的方法2。
方法2
查看您的setup.py,如果它是一个较旧的包,它可能是导入distutils.core.setup()而不是setuptools.setup()。
我(在2015年)结合了这些因素进行了研究:
distutils.core.setup()的旧包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:集环境变量
在您刚刚打开的命令提示符中设置这些环境变量。
SET DISTUTILS_USE_SDK=1
SET MSSdk=1参考http://bugs.python.org/issue23246
步骤4:构建和安装
cd到要构建的包,然后运行python setup.py build,然后运行python setup.py install。如果您想安装到虚拟环境中,请在构建之前激活它。
发布于 2014-11-26 17:53:17
这是我所面临的最常见的问题。但我用用于Visual 2012的pytools解决了这个问题。在安装pytools之后,在new中添加了一个新的项目类别

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

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

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


控制台输出确定您的包安装是否完美。
希望这能帮到你。
https://stackoverflow.com/questions/27154476
复制相似问题