尝试在 Python 3.5 中运行 Sanic 应用程序的未定义符号

Posted

技术标签:

【中文标题】尝试在 Python 3.5 中运行 Sanic 应用程序的未定义符号【英文标题】:undefined symbol trying to run Sanic application in Python 3.5 【发布时间】:2017-05-19 07:57:42 【问题描述】:

当我尝试使用 Python 3.5 运行 Sanic 应用程序时,我收到以下错误:

Traceback (most recent call last):
  File "api.py", line 1, in <module>
    from sanic import Sanic
  File "/home/shiro/dev/unassociated/user-api/.venv/lib/python3.5/site-packages/sanic/__init__.py", line 1, in <module>
    from sanic.app import Sanic
  File "/home/shiro/dev/unassociated/user-api/.venv/lib/python3.5/site-packages/sanic/app.py", line 14, in <module>
    from sanic.handlers import ErrorHandler
  File "/home/shiro/dev/unassociated/user-api/.venv/lib/python3.5/site-packages/sanic/handlers.py", line 14, in <module>
    from sanic.response import text, html
  File "/home/shiro/dev/unassociated/user-api/.venv/lib/python3.5/site-packages/sanic/response.py", line 3, in <module>
    from ujson import dumps as json_dumps
ImportError: /home/shiro/dev/unassociated/user-api/.venv/lib/python3.5/site-packages/ujson.cpython-35m-x86_64-linux-gnu.so: undefined symbol: Buffer_AppendShortHexUnchecked

它在使用命令virtualenv -ppython3.5 .venv --no-site-packages创建的虚拟环境中运行

我在使用gentoo,但我重新编译了所有相关的包,我不知道如何解决这个问题。有人可以帮忙吗?

【问题讨论】:

供将来查找:这里是 github 问题的链接ujson won't import on FreeBSD 【参考方案1】:

我知道这是一个 hack,它并不漂亮,但这就是我在安装 Matrix 的 Synapse 服务器(RIOT 聊天)时解决问题的方法。在 virtualenv 中,它从 pip 拉下一个预编译的共享对象。于是我从portage安装了ujson,并将共享对象复制到了virtaulenv中。

希望对你有帮助。

【讨论】:

以上是关于尝试在 Python 3.5 中运行 Sanic 应用程序的未定义符号的主要内容,如果未能解决你的问题,请参考以下文章

sanic-jinja2

python学习笔记第13章:web开发之sanic框架

python学习笔记第13章:web开发之sanic框架

异步处理的框架Sanic的使用方法和小技巧

我可以使用 Python3.6 Sanic 在 websockets 中检测到“连接丢失”吗?

Windows 上的 Sanic Python,同一端点上的同步行为 - 这是预期的吗?