python psycopg 2-导入错误:导入_psycopg时DLL加载失败:操作系统无法运行%1

tf7tbtn2  于 2023-01-16  发布在  Python
关注(0)|答案(5)|浏览(579)

我在Windows 10上使用conda安装了psycopg2。
https://anaconda.org/anaconda/psycopg2
我是在一个干净的新conda环境(名为wr)中完成的。
然后,我试图运行这个示例应用程序,但我得到了这个错误(见下文)。我不知道我可能做错了什么,因为这一切都很简单,我做了一个干净的方式。
有什么解决办法吗?

import psycopg2
try:
    connection = psycopg2.connect(user = "***",
                                  password = "***",
                                  host = "***",
                                  port = "5432",
                                  database = "***")

    cursor = connection.cursor()
    # Print PostgreSQL Connection properties
    print ( connection.get_dsn_parameters(),"\n")

    # Print PostgreSQL version
    cursor.execute("SELECT version();")
    record = cursor.fetchone()
    print("You are connected to - ", record,"\n")

except (Exception, psycopg2.Error) as error :
    print ("Error while connecting to PostgreSQL", error)
finally:
    #closing database connection.
        if(connection):
            cursor.close()
            connection.close()
            print("PostgreSQL connection is closed")

VS代码错误:

PS C:\Work\WRR\git\tools\JTunnelTestApp>  cd 'c:\Work\WRR\git\tools\JTunnelTestApp'; & 'C:\Programs\Anaconda3\envs\wr\python.exe' 'c:\Users\petrop01\.vscode\extensions\ms-python.python-2020.9.114305\pythonFiles\lib\python\debugpy\launcher' '56143' '--' 'c:\Work\WRR\git\tools\JTunnelTestApp\main.py'
Traceback (most recent call last):
  File "c:\Work\WRR\git\tools\JTunnelTestApp\main.py", line 1, in <module>
    import psycopg2
  File "C:\Programs\Anaconda3\envs\wr\lib\site-packages\psycopg2\__init__.py", line 51, in <module>
    from psycopg2._psycopg import (                     # noqa
ImportError: DLL load failed while importing _psycopg: The operating system cannot run %1.
PS C:\Work\WRR\git\tools\JTunnelTestApp>

编辑:似乎他们在2年前就有一个漏洞,他们只是关闭了它,完全忽略了它。

https://github.com/psycopg/psycopg2/issues/734

tct7dpnv

tct7dpnv1#

对于Windows,当使用Anaconda时,我发现从VS代码/Windows终端安装并不适用于所有情况。而是从Anaconda终端安装。我不知道为什么会这样,但它已经在多台计算机上修复。
1.打开Anaconda导航器
1.环境
1.选择要安装psycopg2/psycopg2-binary的环境,然后打开终端
1.卸载所有以前的安装
pip卸载psycopg2
pip卸载psycopg2-二进制
1.重新安装
管道安装psycopg2
pip安装psycopg2-二进制
现在它应该工作了。
特别是发现这对使用Django ORM的独立脚本和Postgresql一起工作很有用。Django工作得很好,但是没有这个修复独立脚本就不行了。非常奇怪。

sycxhyv7

sycxhyv72#

对于我来说,更新到 * psycopg 2和psycopg 2-binary* 到2.8.6在python中运行3.8

7vux5j2d

7vux5j2d3#

我在this reddit post中找到了解决方案,这都归功于u/brianckeegan
如果你使用conda来管理psycopg 2 for Python 3.9+,wheels指向一个旧版本(v2.8.6),这会导致这个错误;如果你通过pip安装,你会得到一个支持Python 3.9的更新版本(v2.9.1),直到conda wheels更新:

conda remove psycopg2
pip install psycopg2
vkc1a9a2

vkc1a9a24#

对于我从Anaconda Jmeter 板中删除*psycopg2 *,以及

pip intall psycopg2-binary

奏效了。

slwdgvem

slwdgvem5#

你可以使用psycopg2-binary库代替psycopg2 .安装后用法是相同的.

相关问题