Неопределенный символ пытается запустить приложение Sanic в Python 3.5

Когда я пытаюсь запустить приложение Sanic с Python 3.5, я получаю следующую ошибку:

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, но я перекомпилировал все связанные пакеты, и я не знаю, как решить эту проблему. Кто-нибудь может помочь?

1 ответ

Я знаю, что это хак, и это не красиво, но именно так я решил свою проблему при установке сервера Matrix Synapse (RIOT chat). Внутри virtualenv он сносит предварительно скомпилированный общий объект из pip. Поэтому я установил ujson из portage и скопировал общий объект в virtaulenv.

Я надеюсь, это поможет вам.

Другие вопросы по тегам