из lxml import etree ImportError: сбой загрузки DLL: указанный модуль не найден - PullRequest
0 голосов
/ 24 октября 2019

Я недавно установил свежую версию Anaconda 2019-10, которая использует Python 3.7.4. Чтобы иметь возможность читать / записывать файлы MsWord .docx из Python, я использую библиотечный модуль python-docx, с которым я установил: conda install -c conda-forge python-docx Установлен python-docx 0.8.10. Теперь сценарий python, который я часто использовал для чтения / записи файлов MsWord .docx с моей предыдущей установкой anaconda (с python3.5.4 и неизвестной мне версией python-docx).

script: (укороченный)


    import docx
    doc = docx.Document('demo.docx') # demo.docx exists in same dir
    print(len(doc.paragraphs))

внезапно выдает ошибку:

Traceback (последний последний вызов):

  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.

Есть ли решение этой проблемы? Я не могу вернуться к своей предыдущей установке!

Сегодня я установил python-docx в мою простую установку python3.7.5, используя: 'pip install python-docx` Теперь вышеописанная ошибка не возникает. Переустановил Anaconda и заново установил python-docx в anaconda с pip, и возникла та же ошибка, что и выше. Моя ОС Windows10. В обоих случаях я запускаю тест с Eclipse \ PyDev и переключаюсь в PyDev между интерпретатором python3.7.5 и anaconda python3.7.4.

1 Ответ

0 голосов
/ 25 октября 2019

Решено! . При попытке переустановить пакет lxml == 4.1.1 в журнале ошибок сообщалось о нескольких ошибках, содержащих подсказки для решения.

  1. ОШИБКА: b "'xslt-config'не распознается как внутренняя или внешняя команда, \ r \ noperable программа или командный файл. \ r \ n "** убедитесь, что установлены пакеты разработки libxml2 и libxslt **
  2. building 'lxml.etreeРасширение:ошибка: требуется Microsoft Visual C ++ 14.0. Получите его с помощью "Microsoft Visual C ++ Build Tools": https://visualstudio.microsoft.com/downloads/

Так что может быть проблема в сборке lxml.etree, потому что правильный компилятор Visual C ++ недоступен. Это подтверждается в статье Майкла Хирша от 21 сентября 2019 года под названием «Исправление ошибки Python 3 в Windows: требуется 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 !"

> работает с lxml.etree!

...