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:\path\to\pg_config.exe build

这个程序库需要libpq.dll的支持,因此在运行时这个动态连接库一定要可找到,比如在系统的path变量保护库的路径或者干脆复制到psycopg2的目录中来。“libpq.dll”本身还需要依赖于其他几个dll文件,这些dll都可以在PostgreSQL的bin目录中找到:libeay32.dll, ssleay32.dll和libintl-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分发包中,这可能是最易用的版本了。

使用MinGW编译Psycopg2相关推荐

  1. 【POCO】POCO学习总结(四)——MinGW编译poco

    在window下使用MinGW编译poco 使用MSYS 下载MSYS 官网介绍:http://www.mingw.org/wiki/Getting_Started 官网下载:https://jais ...

  2. mingw编译ffmpeg 错误:Unknown option --enable-memalign-hack

    据说mingw编译ffmpeg的话需要添加 --enable-memalign-hack 开关 但如果源码是最新版比如:ffmpeg4.0.2 的话 好像已经禁用了该开关. "我可以确认新的 ...

  3. Qt5.5.0环境下的mingw编译dcmtk 3.6.1_20150924

    网上关于mingw编译dcmtk的文章太少,不方便查阅,期间遇到各种问题.特意将整个编译过程记录下来.为了保证所有编译出来的文件方便我在Qt5.5.0中使用,将所有的dcmtk依赖的外部库下载下来并进 ...

  4. MinGW编译wxWidget

    MinGW编译wxWidget MinGW编译wxWidget WXWIN:源代码根目录 解压源码 进入到%WXWIN%\build\msw 清理项目 mingw32-make -f makefile ...

  5. Mingw编译DLib

    Mingw编译DLib 因为机器上安装了qt-opensource-windows-x86-mingw530-5.8.0,所以准备使用其自带的mingw530来编译DLib使用. 因为DLib使用CM ...

  6. [转]cscope在windows下使用mingw编译的方法

    cscope在windows下使用mingw编译的方法      http://blog.csdn.net/mslk/archive/2007/05/06/1598513.aspx cscope在wi ...

  7. c++ 编译添加dll_使用MinGW编译OpenCV4源码与配置使用演示

    点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 QT在Windows上安装好之后,常规会两种编译器选择分别是: -VS2015/2017/2019....-m ...

  8. qt学习之旅--MinGW编译FFmpeg(32bit)

    0.前言 本来想说FFmpeg使用现成的动态库,结果发现FFmpeg已经没有32位的了,然而我的QT使用的还是MinGW32位的,没办法,只能自己编译生成32位动态库. 参考博客:ffmpeg 2.6 ...

  9. mingw版本下qt与HTML,QT5.10开发(2) 在Windows 10下使用MinGW编译 静态Qt 5.10 release版 详细过程...

    Qt建议安装动态链接Dbug版和编译安装静态链接release版 前提: 先安装动态链接Dbug版,方法:QT5.10开发(1)安装QT5.10 地址:http://blog.csdn.net/qq_ ...

最新文章

  1. 传说中的贝叶斯统计到底有什么来头?
  2. mysql中的自关联详解_Laravel - MySQL数据库的使用详解6(Eloquent ORM用法3:模型关联、关联查询)...
  3. CodeForces-1294B排序+pair使用
  4. ECS:利用ECS进行深度学习详细攻略
  5. 计算机清灰后无法联网,修台电脑比窦娥还冤,清灰后电脑不开机,客户:刚刚还是好好的!...
  6. Java JUC工具类--Future
  7. python终端指令大全_使用python模拟命令行终端的示例
  8. jsp mysql 音乐网站_Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统
  9. FPGA笔试数电部分(一)
  10. Linux下tomcat的catalina.out文件过大,以及目录更改解决办法
  11. python自动填表单_用python-webdriver实现自动填表
  12. Servlet 身份验证体系结构
  13. 从MP3到种子王者海盗湾, 鬼知道今天的去中心化都经历了些什么
  14. 【黏住用户的不是小红书,而是它背后的那些人】
  15. es数据库查询API
  16. 爱马仕Hermès手表怎么样?
  17. mysql rand_mysql的rand函数
  18. 2022-2028年中国肉羊养殖行业市场行情动态及投资潜力研究报告
  19. 虚拟机概论(六)——JAVA虚拟机模型
  20. POJ 2245 Lotto G++

热门文章

  1. 算法(15)-leetcode-explore-learn-数据结构-运用递归解决二叉树的问题
  2. 算法(8)-leetcode-explore-learn-数据结构-链表
  3. STL源码剖析 内存基本处理工具 初始化空间的五个函数
  4. C++ 使用move来删除用户指定的文件
  5. H.264中的I_PCM模式
  6. C语言typedef关键字—伟大的缝纫师
  7. linux 查看 CPU 使用率
  8. 解决 : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
  9. Java中Web程序修改配置文件不重启服务器的方法
  10. php 两变量值互换 方法