Python 3.6 由于lxml依赖关系, 导入docx或python-docx失败的问题

来源:互联网 发布:炫舞炸家族邀请软件 编辑:程序博客网 时间:2024/05/18 01:56

在使用Python进行doc/docx类文本读写时, 要使用docx库和python-docx库. 这两个库会依赖于lxml库, 由于安装的lxml库版本有冲突, 导致docx和python-docx这两个库虽然已经安装, 但是在代码里还是不能导入. 研究了一番, 可以通过以下方法解决.


问题现象及原因

运行代码, 提示”from lxml import etree”错误, 进而导致docx及python-docx不能被导入;
原因是 Python 3.6.X 安装的lxml的版本是3.8.0, 在lxml-3.7.3版本可以顺利支持docx和python-docx库的使用. 所以一般通过降低lxml的版本就可以解决问题.


解决方法

方法一: 使用pip本地安装lxml-3.7.3库

  1. 从pypi下载对应系统及版本的版本包到本地目录, 比如windows下”D:\Documents\Downloads”. 比如下载的包为”lxml-3.7.3-cp36-cp36m-win_amd64.whl”.

  2. 若已安装lxml-3.8.0, 先在cmd中执行pip uninstall lxml命令卸载3.8.0的包.
    这里写图片描述

  3. 在cmd切换目录至下载的版本包所在的目录, 执行pip install lxml-3.7.3-cp36-cp36m-win_amd64.whl命令, 安装本地库文件.
    这里写图片描述

  4. 版本包安装完毕后, 就可以安装docx库或python-docx库了(若已安装,可跳过). 执行pip install docx安装需要的库.
    这里写图片描述

  5. 成功安装完毕后, 就可以正常导入使用docx或python-docx库.

方法二: 使用conda安装docx或python-docx库

这个方法适合于使用Anaconda3版本Python的童鞋. 安装过程大体相同, 但是由于docx和python-docx不在Anaconda3的正式库中, 所以在安装时, 不能使用conda install命令, 而要使用Anaconda3/Scripts下的pip来安装.

因此, 需要切换目录到Anaconda3/Scripts目录下执行pip来安装库(为了区别于系统已安装的基础python3.6的pip), 但是以后每次需要安装第三方库, 都需要先切换目录进来比较麻烦. 为了可以全局调用并区别于基础版本的pip工具, 可以重命名Anaconda3/Scripts目录下的"pip.py""pip-script.py"脚本为"condapip.py""condapip-script.py". 这样就可以在系统全局调用condapip install ...命令执行库的安装.


原创粉丝点击