admin 管理员组

文章数量: 887017

macos和linux安装方法很简单,执行:

pip install pysqlcipher

很容易就能安装上,但是在windows下面,就不一样了,首先我们在控制台执行上面的命令:

pip install pysqlcipher

然后会发现如下报错:

错误提示:Fatal error: OpenSSL could not be detected!

1,安装OpenSSL

是的,缺少openssl,那我们去官网下载,地址如下:http://openssl/source/ ,我下载的版本是0.9.8
下载回来的是源码,需要安装vc编译,编译步骤百度吧,很多,就不在这里描述了。
编译好之后会在openssl目录生成lib及dll二进制文件,备用。

2,安装vc++ compiler for python2.7

地址:http://aka.ms/vcpython27
必须安装,否则安装会报错要求你去下载。

3,查看安装脚本

虽然openssl已经生成,但是怎么让pysqlcipher的检测到呢?这里只能去看他的源码了。源码在github上。
然后我们打开根目录下的setup.py文件。
在第185行,我们看到:

openssl_conf = os.environ.get('OPENSSL_CONF')

是的,安装脚本通过环境变量OPENSSL_CONF来读取openssl位置。
继续往后看,会看到:

ext.include_dirs.append(os.path.join(openssl, "include"))
    .
    .
    .
ext.extra_link_args.append("libeay32.lib") 
ext.extra_link_args.append( 
    "/LIBPATH:" + os.path.join(openssl, "lib") 
) 

于是,我们知道头文件应该放在OPENSSL_CONF/include下,lib及dll文件应该放在OPENSSL_CONF/lib下。
那我们随便找一个目录,比如“c:\openssl”,然后将openssl下面的include文件夹拷贝到c:\openssl下,将libeay.lib和libeay.dll拷贝到c:\openssl\lib下。

然后设置环境变量OPENSSL_CONF=c:\openssl\include\ 注意,最后一定要有”\”。

这里吐槽一下他的安装脚本。他有一行代码是这样的:
openssl = os.path.dirname(os.path.dirname(openssl_conf)) 
这就意味着,如果你不在最后加一个'\',那openssl变量的值就等于'c:\'而不是'c:\openssl',然后他就会认为include文件在'c:\include'下,二进制文件在'c:\lib'下,然后安装就会报错,擦,就不能好好写吗。。。。

或者直接在命令行下执行:

set OPENSSL_CONF=c:\openssl\include\

第二种方式只在当前会话中生效,关了控制台,就不存在了。
设置好环境变量后,我们重新执行:

pip install pysqlcipher

提示:Successfully installed pysqlcipher-2.6.4
大功告成。

本文标签: 模块 Windows pysqlcipher