Могу ли я заставить psycopg2 работать на Windows с питоном, созданным с vc9? - PullRequest
3 голосов
/ 23 апреля 2010

У меня есть вопрос, похожий на ImportError: сбой загрузки DLL: - при попытке импортировать библиотеку psycopg2

Я пытаюсь запустить psycopg2 с Python 2.6.5, созданным с помощью VisualСтудия 2008 (vc9).Я получаю эту ошибку:

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

libpg.dll, из PostGres 8.4, находится в пути.Если я соберу psycopg2 с помощью Python, построенного на vc6, он будет работать нормально.Но проблема в том, что он мне нужен для работы с Python, построенным на vc9.

Страница, на которую я ссылался, упоминалась с использованием более старой версии.Когда я пытаюсь собрать версию 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".Что это?

  • Эрик

1 Ответ

2 голосов
/ 21 июня 2011

возможно вам стоит установить windows SDK 7.0.

У меня установлен vs2005 / vs2008 / vc2010 и некоторые Windows SDK, и когда я устанавливаю пакет pycopg psycopg2-2.4.2, используйте "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" к системному пути, тогда все работает нормально.

...