【问题标题】:lxml installed, but not working on Windowslxml 已安装,但无法在 Windows 上运行
【发布时间】:2023-03-23 14:35:02
【问题描述】:

我需要针对 XSD 验证 XML 文件。为此,我想使用lxml library。问题是即使我有from lxml import etree 并且已经将lxml 安装到C:\Python33\Lib\site-packages\lxml\,我得到了错误

Traceback (most recent call last):
  File "C:\Users\asmithe\Documents\dev1\TestParse.py", line 3, in <module>
    from lxml import etree as ET_l
ImportError: No module named lxml

为什么会这样,我该如何解决?我尝试将 C:\Python33\Lib\site-packages\lxml\ 添加到 PATH 变量中,但没有帮助。我已经使用 PIP 安装了 lxml。

更新:当我通过交互式终端运行脚本时(即在 cmd 中输入python)它可以import lxml

这是一个简单的脚本

from lxml import etree

def main():
    print('hi')


if __name__ == "__main__":
    main()

在 cmd 我做

C:\Users\dev1\Documents\test>python
Python 3.3.5 (v3.3.5:62cf4e77f785, Mar  9 2014, 10:35:05) [MSC v.1600 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from lxml import etree
>>>
>>> def main():
...     print('hi')
...
>>>
>>> if __name__ == "__main__":
...     main()
...
hi
>>> exit()

但是如果我尝试运行它

> ImportLxml.py

然后我得到

C:\Users\dev1\Documents\test>ImportLxml.py
Traceback (most recent call last):
  File "C:\Users\dev1\Documents\XML test\TestImport.py", line 1, in <module>

    from lxml import etree
ImportError: No module named lxml

这里是 PATH 环境变量中的所有 pythonic 条目

C:\Python33\;
C:\Python33\Scripts;
C:\Python33\Lib\site-packages\lxml\
%ARCGISINSALLDIR%\arcpy;

【问题讨论】:

  • 您的系统中是否安装了多个 python?
  • @AnandSKumar 是的 Python 2.7 和 3.3(我打算使用 3.3)。你问我是否有多个 lxml 安装?在文件夹C:\Python33\Lib\site-packages 中有子文件夹lxmllxml-3.4.4.dist-info
  • 你能做到吗 - import sys; sys.version 在 python 终端内,你得到库导入错误。
  • @AnandSKumar 它说 3.3.5。但是当我从命令行 python 执行 import lxml 时,它可以工作。
  • 你是如何运行脚本的?你也可以添加脚本吗?

标签: python windows pip lxml


【解决方案1】:

Python Launcher for Windows 配置为默认使用 3.3.5:

py -3

或者 -- 假设您在上次安装 Python 时选择安装 Python Launcher -- begin your script with a shebang which the Python Launcher will recognize as requesting Python 3:

#! python3

如果您在安装 Python 3.3 时决定不安装适用于 Windows 的 Python Launcher,请参阅 the install documentation 了解手动步骤:

将正确的文件组与 .py 脚本相关联:

assoc .py=Python.File

将所有 Python 文件重定向到新的可执行文件:

ftype Python.File=C:\Path\to\pythonw.exe "%1" %*

这可用于将 Python.File 的类型配置为您选择的 Python 解释器,即。对于 3.3.5。 (作为一个好的做法,Python.File 应该指向 py.exepython.exe;上面的 pythonw.exe 示例是直接引用文档,但仍然是一个不好的做法。


或者,如果您在磁盘上有一个py.exe(随 Python 3.3 安装)但没有被使用,您可以稍微修改这些说明:

将正确的文件组与 .py 脚本相关联:

assoc .py=Python.File

将所有 Python 文件重定向到新的可执行文件:

ftype Python.File=C:\Path\to\py.exe "%1" %*

...再次调整路径以适合您安装 Python 3.3.x 的位置。

【讨论】:

  • "将适用于 Windows 的 Python 启动器配置为默认使用 3.3.5:" 我不知道该怎么做。我添加了#! python3#! C:\python33\python.exe,并尝试关注these instructions,但我无法让它默认使用python 3 解释器。
  • 不要遵循这些说明——遵循安装程序中特定于 Python 的说明。我链接它们是有原因的。
  • 当然也可以使用ftype将Python文件与py.exe关联起来。
  • #! python3 不起作用意味着您当前的关联是(2.x)python.exe 而不是py.exe。您也可以重新运行 3.3.5 安装程序,并确保您已将启动器作为一个选项进行检查。
  • Python.File 应该运行 python.exe(或 py.exe),而不是 pythonw.exe(或 pyw.exe)。后者通常与 .pyw 脚本和 Python.NoConFile 文件类型相关联。
猜你喜欢
  • 1970-01-01
  • 2020-03-17
  • 2019-09-28
  • 2015-07-18
  • 2020-04-09
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多