加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用MinGW编译Psycopg2

发布时间:2020-12-13 17:46:31 所属栏目:百科 来源:网络整理
导读:Building Psycopg on Windows using MinGW Posted by Daniele Varrazzo on June 5,2011 使用MinGW编译Psycopg2 佣工7001 2012.2 我的目的是在windows系统下使用MinGW和PostgreSQL客户端编译安装Psycopg。 我使用了 Giovanni Bajo 封装的MinGW GCC binaries

Building Psycopg on Windows using MinGW

Posted by Daniele Varrazzo on June 5,2011

使用MinGW编译Psycopg2

佣工7001 2012.2

我的目的是在windows系统下使用MinGW和PostgreSQL客户端编译安装Psycopg。

我使用了Giovanni Bajo封装的MinGW GCC binaries 分发版本。这个分发版为我们处理了很多细节。例如:把MinGW注册为Python的默认编译器,外加一些我根本不想知道的魔法, 因此它使得我的整个处理过程足够容易了。

首先,需要确认安装脚本setup.py 可以找到配置文件“pg_config”。目前的Psycopg版本有一个Bug,造成在Path环境变量中也不能找到这个配置文件。 这个bug 将在Psycopg 2.4.2版本中被修正。 在这儿之前的几个版本你将不得不在setup.cfg文件中指定pg_config的路径,或者使用“ --pg-config”这个命令行选项来给出:

python setup.py build_ext --pg-config=C:pathtopg_config.exe build

这个程序库需要libpq.dll的支持,因此在运行时这个动态连接库一定要可找到,比如在系统的path变量保护库的路径或者干脆复制到psycopg2的目录中来。“libpq.dll”本身还需要依赖于其他几个dll文件,这些dll都可以在PostgreSQL的bin目录中找到:libeay32.dll,ssleay32.dlllibintl-8.dll这些文件都需要可以访问到。并且不幸的是,如果其中某个文件不能找到,你只能收到这样的错误:“ImportError: dll load failed”。当然,这样的错误使用 dependency walker可以很容易的跟踪出来。

另一个你可能遇到的问题是基于Python 2.6或更新的Python版本来编译时:一些MinGW版本使用了过期的msvcr90.lib版本,这同样会造成这个让人摸不着头脑的错误信息“ImportError”。在这里,dependency walker这个工具同样管用,它会指出在msvcr90.lib中找不到函数“localtime”。这个bug在已被提出来,请见issue 3308。我的解决方案是下载新的MinGW 版本,使用新版本里面的libmsvcr90.a

好了,虽然依旧依赖于很多动态连接库,到目前为止总算可以编译了。如果解决方案中可以把所有的依赖项都复制到软件包目录中,我将热泪盈眶了。。当然你还可以使用Jason的分发包 。他已经把libpq和openssl作为静态库包含在了psycopg分发包中,这可能是最易用的版本了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读