未定义的符号:导入 pyquery 时的 xsltGetProfileInformation

undefined symbol: xsltGetProfileInformation while importing pyquery

我正在尝试在 Python 3.8.3 上使用 pyquery,但由于以下原因而失败:

>>> import pyquery
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/lib/python3.8/site-packages/pyquery/__init__.py", line 7, in <module>
    from .pyquery import PyQuery  # NOQA
  File "/opt/lib/python3.8/site-packages/pyquery/pyquery.py", line 11, in <module>
    from lxml import etree
ImportError: /opt/lib/python3.8/site-packages/lxml/etree.cpython-38.so: undefined symbol: xsltGetProfileInformation

OS 是 CoreELEC,所以没有“apt-get”,只有像 OpenWRT 中那样的“opkg install”。

尝试重新安装 lxml 和 pyquery,但没有成功。 问题出在哪里?

终于想通了。 系统只有“opkg install”安装包的方式。 python3-lxml 软件包已与 libxml2 一起安装。 我还必须安装 libxslt 才能正常工作。 所以最终的步骤是:

opkg install python3-lxml
opkg install libxml2
opkg install libxslt

现在我可以导入 pyquery(它使用 lxml 中的 etree)。

我在 OpenWrt 19.x.x 和 python 3.7 上遇到了同样的错误。但在以前的版本中,一切正常。所以我只是强制删除了 libxml2libxslt 库并从以前的分支重新安装它们。