pypy3 导入 psycopg2 错误(未定义符号:PyCoder_Encoder)
Posted
技术标签:
【中文标题】pypy3 导入 psycopg2 错误(未定义符号:PyCoder_Encoder)【英文标题】:pypy3 import psycopg2 error (undefined symbol: PyCoder_Encoder) 【发布时间】:2019-04-19 16:11:08 【问题描述】:我在Ubuntu16.04上通过以下代码将psycopg2安装到pypy3(Python3.5.3):
pypy3 -m pip install psycopg2
但是,我遇到了一些错误:
错误:b'您需要安装 postgresql-server-dev-X.Y 来构建服务器端扩展或 libpq-dev 来构建客户端应用程序。\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:
enter image description here
我在“pypy3 import psycopg2 error (PyCodec_Encoder)”中发现了同样的错误,但我没有找到解决办法。
有人知道怎么解决吗?
【问题讨论】:
【参考方案1】:您pointed to 的 PyPy 问题包含答案“有人将不得不实现缺失的函数(以及其他缺失的 PyCodec_* 函数。目前我们在codec.py 中只实现了极少数。实现非常简单在实现函数的模式上,更难的部分是编写测试。
有psycopg2cffi package,它应该可以在 PyPy 上运行并且会更快。如果它满足您的需求,不妨试一试并在此处发表评论。
【讨论】:
pscopg2cffi 及其 compat 模块使其伪装成 psycopg2 是答案。【参考方案2】:psycopg2-binary 可与最新版本的 PyPy 3.6(从 2020 年 1 月 23 日开始每晚构建)一起使用,因为它包含 PyCodec_Encoder 和 PyCodec_Decoder 实现。
【讨论】:
很好的建议,这个修复了我的“未定义符号:timeradd”错误。以上是关于pypy3 导入 psycopg2 错误(未定义符号:PyCoder_Encoder)的主要内容,如果未能解决你的问题,请参考以下文章