尝试在 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 应用程序的未定义符号的主要内容,如果未能解决你的问题,请参考以下文章