从 lxml 导入 etree ImportError: DLL 加载失败: 找不到指定的模块
我最近安装了全新的 Anaconda 版本 2019-10,它使用 python 3.7.4。
为了能够从 Python 中读取/写入 MsWord .docx 文件,我使用了库模块 python-docx,
我使用以下命令安装它:
conda install -c conda-forge python-docx
安装的是 python-docx 0.8.10。
现在我经常使用一个 python 脚本来读取/写入 MsWord .docx 文件,我使用的是我之前的 anaconda 安装(python3.5.4 和 python-docx 版本我不知道)。
脚本:(缩写)
import docx
doc = docx.Document('demo.docx') # demo.docx exists in same dir
print(len(doc.paragraphs))
突然抛出一个错误:
回溯(最近一次调用最后一次):
File "D:\pa\Python\ProjectsWorkspace\Py001Proj\src\printenfrompython\wordprinten.py", line 19, in <module>
import docx
File "C:\Users\pa\Anaconda3\lib\site-packages\docx\__init__.py", line 3, in <module>
from docx.api import Document # noqa
File "C:\Users\pa\Anaconda3\lib\site-packages\docx\api.py", line 14, in <module>
from docx.package import Package
File "C:\Users\pa\Anaconda3\lib\site-packages\docx\package.py", line 9, in <module>
from docx.opc.package import OpcPackage
File "C:\Users\pa\Anaconda3\lib\site-packages\docx\opc\package.py", line 9, in <module>
from docx.opc.part import PartFactory
File "C:\Users\pa\Anaconda3\lib\site-packages\docx\opc\part.py", line 12, in <module>
from .oxml import serialize_part_xml
File "C:\Users\pa\Anaconda3\lib\site-packages\docx\opc\oxml.py", line 12, in <module>
from lxml import etree
ImportError: DLL load failed: The specified module could not be found.
这个问题有解决办法吗? 我无法回到之前的安装!
今天我在我的普通 python3.7.5 安装中使用 'pip install python-docx` 安装了 python-docx 现在上述错误不再发生。 重新安装 Anaconda 并使用 pip 在 anaconda 中重新安装 python-docx,出现与上述相同的错误。我的操作系统是 windows10。我在两种情况下都使用 Eclipse\PyDev 运行测试,并在 PyDev 中在 python3.7.5 和 anaconda python3.7.4 解释器之间切换。
conda 版本:4.9.2(已安装在系统中) 尝试运行:
scrapy startproject name_of_project
错误:
ImportError: DLL load failed while importing etree: The specified module could not be found.
解决方案:
步骤 1:pip uninstall lxml
步骤 2:pip install lxml
错误已解决
New Scrapy project 'tutorial', using template directory 'C:\Users\New\miniconda3\lib\site-packages\scrapy\templates\project', created in:
C:\Users\New\Documents\TOUR_TOC++\web_scraping\NSE\tutorial
You can start your first spider with:
cd tutorial
scrapy genspider example example.com ...
已解决! 。 在尝试重新安装 lxml==4.1.1 包时,错误日志报告了许多错误,其中包含解决方案的提示。
- 错误:b“'xslt-config' 未被识别为内部或外部命令,\r\n 不可操作的程序或批处理文件。\r\n” ** 确保安装了 libxml2 和 libxslt 的开发包 **
- 构建“lxml.etree”扩展:。 错误:需要 Microsoft Visual C++ 14.0。使用“Microsoft Visual C++ 构建工具”获取它: https://visualstudio.microsoft.com/downloads/
因此,由于没有正确的 Visual C++ 编译器,构建 lxml.etree 可能会出现问题。这似乎在 Michael Hirsch 于 2019 年 9 月 21 日发表的一篇题​​为 “修复 Windows 上的 Python 3 错误:需要 Microsoft Visual C++ 14.0” 的文章中得到了证实,请参阅 https://www.scivision.dev/python-windows-visual-c-14-required/
根据他的建议,我使用离线安装程序安装了 Microsoft Visual C++ 14.0:vs_buildtools.exe 选择:工作负载 → C++ 构建工具。安装选项:仅选择“Windows 10 SDK”(假设计算机是 Windows 10)。要从命令行使用 MSVC cl.exe C / C++ 编译器,还需要选择 C++ 构建工具。
然后我安装了 libxml2 和 lxml,解决了这个问题:
try:
from lxml import etree
print("running with lxml.etree !")
except ImportError:
print("Import etree from lxml failed !"
> running with lxml.etree!
最简单的解决方案是(上面已经提供): 步骤 1:pip uninstall lxml 步骤 2:pip install lxml
但是,在通过 lxml-4.6.3.tar.gz 重新安装 lxml 时,我遇到了问题。因此,我尝试通过相应的 .whl 文件重新安装并成功了!