【问题标题】:ImportError: cannot import name 'etree' on Python 3.6ImportError:无法在 Python 3.6 上导入名称“etree”
【发布时间】:2019-04-23 16:51:02
【问题描述】:

在 python3.6 上运行“从 lxml 导入树”时出现错误

>>> import lxml
>>> from lxml import etree
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name 'etree'

在python3.4上同样的工作,我尝试了很多事情来解决如下问题,但没有成功。

python -m pip uninstall lxml
python -m pip install lxml==3.6.0

pip install -t /usr/local/lib/python3.6/dist-packages lxml==3.6.0

【问题讨论】:

标签: python-3.x ubuntu-14.04 lxml xml.etree


【解决方案1】:

以防万一有人遇到类似问题。 我在使用 Python3.6 时也遇到了这个问题。 只需卸载lxml 并使用pip 重新安装即可解决问题。

【讨论】:

  • 对我不起作用。尤其是在 lambda 函数环境中。
  • 我将我的 lambda 运行时从 python3.8 更改为 python3.6,它神奇地起作用了
【解决方案2】:

使用 python 3.6 在 Lambda 中工作

原来 lxml 包装了为特定处理器架构编译的 c 库(我认为)

在此处为 lambda 使用预编译的二进制文件:https://github.com/JFox/aws-lambda-lxml

【讨论】:

    【解决方案3】:

    对于 Windows:

    在我的 Windows 2019 服务器实例 Python 3.8 和 Anaconda 遇到相同问题后,我下载了相应的 whl package,并安装了它

    pip install lxml-4.6.3-cp38-cp38-win_amd64
    

    现在可以正常使用了。

    【讨论】:

      【解决方案4】:

      在使用 3.9 版部署 Azure python 函数时,我遇到了同样的问题。我在 Azure 中重新部署了 3.6,一切正常。

      【讨论】:

        【解决方案5】:

        在 VS 代码中运行代码时遇到了同样的问题。对我来说,我通过将 VS 代码中的解释器从 32 位更改为 64 位来解决它。

        【讨论】:

        • 我怀疑架构并不是重要的区别,这两个解释器的环境之间还有一些其他区别。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多