【发布时间】:2019-10-28 16:14:41
【问题描述】:
我正在尝试在我的 VirtualEnv 中安装 Psycopg2,最初我遇到了找不到 pg_config.exe 的错误,我通过在 PATH 中添加完整路径来解决它。
但随后它给出了错误 Microsoft Visual C++ 14.0 is required。要删除它,我安装了 VC_redist.x64 VC_redist.x86。
我还在 VS 社区中安装了 C++ 开发模块。但它仍然给出这个错误。
编辑:还下载并安装了 VS 构建工具。
我的环境:Windows 10 SL、Python 3.8.0、VirtualEnv 16.7.7、pip 19.3.1
psycopgmodule.obj : error LNK2001: unresolved external symbol _PQfreemem
psycopgmodule.obj : error LNK2001: unresolved external symbol _PQencryptPasswordConn
psycopgmodule.obj : error LNK2001: unresolved external symbol _PQencryptPassword
psycopgmodule.obj : error LNK2001: unresolved external symbol _PQinitOpenSSL
psycopgmodule.obj : error LNK2001: unresolved external symbol _PQconninfoParse
psycopgmodule.obj : error LNK2001: unresolved external symbol _PQerrorMessage
psycopgmodule.obj : error LNK2001: unresolved external symbol _PQlibVersion
psycopgmodule.obj : error LNK2001: unresolved external symbol _PQconninfoFree
green.obj : error LNK2001: unresolved external symbol _PQclear
pqpath.obj : error LNK2001: unresolved external symbol _PQbinaryTuples
pqpath.obj : error LNK2001: unresolved external symbol _PQsetnonblocking
pqpath.obj : error LNK2001: unresolved external symbol _PQgetvalue
pqpath.obj : error LNK2001: unresolved external symbol _PQresultStatus
pqpath.obj : error LNK2001: unresolved external symbol _PQoidValue
pqpath.obj : error LNK2001: unresolved external symbol _PQcmdStatus
pqpath.obj : error LNK2001: unresolved external symbol _PQsocket
pqpath.obj : error LNK2001: unresolved external symbol _PQftablecol
pqpath.obj : error LNK2001: unresolved external symbol _PQputCopyData
pqpath.obj : error LNK2001: unresolved external symbol _PQstatus
pqpath.obj : error LNK2001: unresolved external symbol _PQisBusy
pqpath.obj : error LNK2001: unresolved external symbol _PQconsumeInput
pqpath.obj : error LNK2001: unresolved external symbol _PQresultErrorField
pqpath.obj : error LNK2001: unresolved external symbol _PQfsize
pqpath.obj : error LNK2001: unresolved external symbol _PQfname
pqpath.obj : error LNK2001: unresolved external symbol _PQsendQuery
pqpath.obj : error LNK2001: unresolved external symbol _PQgetCopyData
pqpath.obj : error LNK2001: unresolved external symbol _PQftable
pqpath.obj : error LNK2001: unresolved external symbol _PQflush
pqpath.obj : error LNK2001: unresolved external symbol _PQftype
pqpath.obj : error LNK2001: unresolved external symbol _PQnfields
pqpath.obj : error LNK2001: unresolved external symbol _PQresultErrorMessage
pqpath.obj : error LNK2001: unresolved external symbol _PQexec
pqpath.obj : error LNK2001: unresolved external symbol _PQfmod
pqpath.obj : error LNK2001: unresolved external symbol _PQcmdTuples
pqpath.obj : error LNK2001: unresolved external symbol _PQntuples
pqpath.obj : error LNK2001: unresolved external symbol _PQresStatus
pqpath.obj : error LNK2001: unresolved external symbol _PQputCopyEnd
pqpath.obj : error LNK2001: unresolved external symbol _PQgetResult
utils.obj : error LNK2001: unresolved external symbol _PQescapeString
utils.obj : error LNK2001: unresolved external symbol _PQescapeStringConn
utils.obj : error LNK2001: unresolved external symbol _PQescapeIdentifier
connection_int.obj : error LNK2001: unresolved external symbol _PQconnectPoll
connection_int.obj : error LNK2001: unresolved external symbol _PQserverVersion
connection_int.obj : error LNK2001: unresolved external symbol _PQnotifies
connection_int.obj : error LNK2001: unresolved external symbol _PQsetNoticeProcessor
connection_int.obj : error LNK2001: unresolved external symbol _PQgetCancel
connection_int.obj : error LNK2001: unresolved external symbol _PQfinish
connection_int.obj : error LNK2001: unresolved external symbol _PQprotocolVersion
connection_int.obj : error LNK2001: unresolved external symbol _PQfreeCancel
connection_int.obj : error LNK2001: unresolved external symbol _PQconnectdb
connection_int.obj : error LNK2001: unresolved external symbol _PQconnectStart
connection_int.obj : error LNK2001: unresolved external symbol _PQparameterStatus
connection_type.obj : error LNK2001: unresolved external symbol _PQcancel
connection_type.obj : error LNK2001: unresolved external symbol _PQtransactionStatus
connection_type.obj : error LNK2001: unresolved external symbol _PQbackendPID
connection_type.obj : error LNK2001: unresolved external symbol _PQconninfo
cursor_type.obj : error LNK2001: unresolved external symbol _PQgetisnull
cursor_type.obj : error LNK2001: unresolved external symbol _PQgetlength
conninfo_type.obj : error LNK2001: unresolved external symbol _PQsslInUse
conninfo_type.obj : error LNK2001: unresolved external symbol _PQconnectionNeedsPassword
conninfo_type.obj : error LNK2001: unresolved external symbol _PQpass
conninfo_type.obj : error LNK2001: unresolved external symbol _PQdb
conninfo_type.obj : error LNK2001: unresolved external symbol _PQsslAttribute
conninfo_type.obj : error LNK2001: unresolved external symbol _PQport
conninfo_type.obj : error LNK2001: unresolved external symbol _PQoptions
conninfo_type.obj : error LNK2001: unresolved external symbol _PQconnectionUsedPassword
conninfo_type.obj : error LNK2001: unresolved external symbol _PQsslAttributeNames
conninfo_type.obj : error LNK2001: unresolved external symbol _PQuser
conninfo_type.obj : error LNK2001: unresolved external symbol _PQhost
lobject_int.obj : error LNK2001: unresolved external symbol _lo_truncate
lobject_int.obj : error LNK2001: unresolved external symbol _lo_write
lobject_int.obj : error LNK2001: unresolved external symbol _lo_export
lobject_int.obj : error LNK2001: unresolved external symbol _lo_import
lobject_int.obj : error LNK2001: unresolved external symbol _lo_creat
lobject_int.obj : error LNK2001: unresolved external symbol _lo_read
lobject_int.obj : error LNK2001: unresolved external symbol _lo_tell
lobject_int.obj : error LNK2001: unresolved external symbol _lo_create
lobject_int.obj : error LNK2001: unresolved external symbol _lo_lseek
lobject_int.obj : error LNK2001: unresolved external symbol _lo_unlink
lobject_int.obj : error LNK2001: unresolved external symbol _lo_open
lobject_int.obj : error LNK2001: unresolved external symbol _lo_close
adapter_binary.obj : error LNK2001: unresolved external symbol _PQescapeByteaConn
adapter_binary.obj : error LNK2001: unresolved external symbol _PQescapeBytea
build\lib.win32-3.8\psycopg2\_psycopg.cp38-win32.pyd : fatal error LNK1120: 83 unresolved externals
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.23.28105\\bin\\HostX86\\x86\\link.exe' failed with exit status 1120
背景:我正在使用 pgSQL 的 Django 中进行开发,由于某些原因,我进行了 Windows 的全新安装,并且在 Windows 安装后,我运行了我的 virtualenv,但它无法检测到任何包(可能是因为我的 env 是在python 3.7,现在我有了 python 3.8(虽然我确实尝试用 python 3.7 安装它))。所以我不得不重建 virtualenv,目前卡在 psycopg2 上
【问题讨论】:
-
我不怎么用windows,但是那些
unresolved external symbols表示Postgres丢失或找不到。具体来说,您的环境中可能缺少libpq.dll。 -
我的
PATH中也包含了C:\Program Files\PostgreSQL\12\lib,我可以确认libpq.dll在那里。 -
psycopg2还不支持 Python 3.8。这是 Github 上的 reported issue。显然,劫持是appveyor,一个部署工具。
标签: python c++ django postgresql psycopg2