我刚刚在 Windows 7 64b 和 InkScape 0.92.2 中遇到了“这个”错误,我想给出一个简短的回答,以阐明这个“奇妙”现象的背景。请注意,错误消息的“技术细节”似乎因不同的人而异 = 它们可能是由不同人的 Windows 系统映像中出现的不同错误配置或 Inkscape 安装程序中可能出现的不同故障导致的各种潜在问题的主机适用于 Windows 的软件包(各种历史版本)。
首先:请注意,Inkscape 中的一些“外围”内容是作为 Python 脚本或模块实现的 - 例如文件导入和导出(至少某些格式,我的是 DXF),也许还有内置帮助。这意味着 Inkscape 的这些功能需要 Python 运行时引擎才能工作。
Python 是一种流行的解释型语言,在您安装 Inkscape 时,您可能会在 PC 上预先安装 Python(某些版本)的系统范围内安装。
无论您的 PC 上是否已经安装了 Python,Inkscape 安装程序都会提供与 Inkscape 一起安装的 Python(安装程序中的一个选项)。 EXE 安装程序确实包含一个复选标记,不确定 MSI 安装程序变体(我似乎记得可选选项集在 MSI 安装程序变体中并不丰富)。
问题来了:这个由 Inkscape 安装的 Python 运行时并没有在系统范围内安装。相反,它位于 C:\Program Files\Inkscape 中。甚至还有一个 python.exe。
为了比较:标准系统范围的 Python 默认位于 C:\Python27\。
为了解决“神奇”综合症,一些人建议将 PYTHONPATH 环境变量(如果需要,系统范围)设置为指向 Inkscape 自己的 Python 库文件夹。就我而言,这对 Inkscape 没有影响,缺少 lxml 的问题仍然存在。同时,它破坏了我的系统范围的 python 实例——猜猜为什么:-)
我很快意识到,就我而言,“Inkscape 自己的”Python 可能缺少 lxml 库。所以我设置了 PYTHONPATH,启动了具有管理员权限的 CMD,将 CD 放入 \Program Files\Inkscape,下载了 get-pip.py 的副本并在 Inkscape Python 环境中运行它。那没有成功安装 pip(IMO 是“pip install lxml”之前的要求)。我不记得确切的错误信息,但它只是没有解决。
接下来,我发现另一种方法是避免在 Inkscape 安装程序中安装 Python,并依赖于系统范围的 Python。我曾经有一些预先存在的 Python 2.7.x,但在我寻找“神奇综合症”时设法卸载了它。所以我也卸载了 Inkscape,删除了我自己对 PYTHONPATH 的定义,并对 Python 和 Inkscape 进行了全新安装。我首先从上游/官方下载站点下载了 Python 2.7.13,然后单击我希望 PIP 与 Python 一起安装,一旦 Python 在 C:\Python27 中很舒服,我运行“pip install lxml”(以及其他几个库,例如我需要用于 RTL-SDR 扫描仪的 NumPy)。之后,我使用 EXE 安装程序安装了 Inkscape,并确保 Inkscape 自己的 Python 没有在 Inkscape 安装程序中检查安装。
瞧,问题消失了。 Inkscape 调用系统范围的 Python 解释器来运行其文件导出脚本。大家都很开心。
除了 PYTHONPATH,请注意 PYTHONHOME 环境变量中的自定义路径(可能是您过去使用 Python 的实验遗留下来的)。
有一种方法可以测试是否安装了lxml:
C:> python
>>> import lxml
>>> lxml
<module 'lxml' from 'C:\Python27\lib\site-packages\lxml\__init__.pyc'>
>>> quit()
另请参阅this topic 以显示已安装的 lxml 版本。