pypy3导入psycopg2出错(undefined symbol: PyCoder_Encoder)

4

我在Ubuntu16.04上使用以下代码为pypy3(Python3.5.3)安装了psycopg2:

pypy3 -m pip install psycopg2

然而,我遇到了一些错误:

错误:b'You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.\n'

命令"python setup.py egg_info"在/tmp/pip-install-epd368s6/psycopg2中失败,错误代码为1

我在 "You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application" 中找到了解决方案。
我的电脑已经安装了Postgresql9.5,所以我使用了以下命令进行安装:
sudo apt-get install libpq-dev
pypy3 -m pip install psycopg2

没有报错,但是当我尝试 "import psycopg2" 时,出现了 ImportError: 图片描述 我在 "pypy3 import psycopg2 error (PyCodec_Encoder)" 中发现了相同的错误,但我没有找到解决方案。
有人知道如何修复吗?
2个回答

5

您所指向的PyPy问题包含答案:“有人将不得不实现缺失的功能(以及其他缺失的PyCodec_*函数。目前,我们只在codec.py中实现了很少量的函数。根据已实现函数中的模式,实现相当直接,较难的部分是编写测试。

这里有psycopg2cffi软件包,它应该可以在PyPy上运行并且速度更快。也许可以尝试一下,如果符合您的需求,请在此处评论。


使用pscogp2cffi及其兼容模块,使其伪装成psycopg2是解决方案。 - Dzamo Norton

2

psycopg2-binary可以与最新版本的PyPy 3.6(来自2020年1月23日的夜间构建)一起使用,因为它包含了PyCodec_Encoder和PyCodec_Decoder实现。


非常好的建议,这为我解决了“undefined symbol: timeradd”错误。 - chjortlund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接