3

ImportError: DLL load failedのような質問があります: - psycopg2 ライブラリをインポートしようとしたとき

Visual Studio 2008 (vc9) でビルドされた Python 2.6.5 で psycopg2 を実行しようとしています。次のエラーが表示されます。

from _psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: DLL load failed: The operating system cannot run %1.

PostGres 8.4 の libpg.dll がパスにあります。vc6 でビルドされた python で psycopg2 をビルドすると、問題なく動作します。しかし、問題は、vc9 でビルドされた Python で動作する必要があることです。

私が参照したページは、古いバージョンを使用して言及しました。バージョン 2.12.0 (または 2.10.0) をビルドしようとすると、次のエラーが発生します。

C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W
3 /GS- /DNDEBUG -DPSYCOPG_DEFAULT_PYDATETIME=1 "-DPSYCOPG_VERSION=\"2.0.10 (dt d
ec ext pq3)\"" -DPG_VERSION_HEX=0x080401 -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BO
OLEAN=1 -DHAVE_PQFREEMEM=1 -DHAVE_PQPROTOCOL3=1 -IC:\Python26\include -IC:\Pytho
n26\PC -I. -Ic:/apps/POSTGR~1/8.4/include -Ic:/apps/POSTGR~1/8.4/include/server
/Tcpsycopg\connection_int.c /Fobuild\temp.win32-2.6\Release\psycopg\connection_i
nt.obj /Wp64
cl : Command line warning D9035 : option 'Wp64' has been deprecated and will be
removed in a future release
connection_int.c
psycopg\connection_int.c(70) : error C2143: syntax error : missing ';' before 't
ype'
psycopg\connection_int.c(71) : error C2065: 'notice' : undeclared identifier
psycopg\connection_int.c(71) : warning C4047: '=' : 'int' differs in levels of i
ndirection from 'connectionObject_notice *'
psycopg\connection_int.c(73) : error C2065: 'notice' : undeclared identifier
psycopg\connection_int.c(73) : warning C4047: '!=' : 'int' differs in levels of
indirection from 'void *'

何度も何度も.... C コードを見ると、struct connectionObject_notice の定義をラップする条件付きコードがないため、何がこのエラーをトリガーするのかわかりません。

最後に、上記のスレッドのポスターで「PG6000」が言及されました。それは何ですか?

  • エリック
4

1 に答える 1

2

おそらく、Windows SDK 7.0 をインストールする必要があります。

vs2005/vs2008/vc2010 といくつかの Windows SDK がシステムにインストールされています。psycopg2-2.4.2 Python パッケージをインストールすると、「python setup.py install」を使用すると、
「mt.exe」が必要です。
「C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin」をパスに追加すると、正常にビルドされます。しかし、 python -c "import psycopg2" は失敗するので、PostgreSQL クライアント インストール パス: "...\PostgreSQL\8.4\bin" をシステム パスに追加すると、すべて正常に実行されます。

于 2011-06-21T13:35:18.923 に答える