使用MinGW编译Psycopg2
Building Psycopg on Windows using MinGW
Posted by Daniele Varrazzo on June 5, 2011
使用MinGW編譯Psycopg2
傭工7001 2012.2
我使用了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的目錄中來?!發ibpq.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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring JDBC最佳实践(2)
- 下一篇: 基于智能手机Android平台音乐播放器