Ошибка импорта с помощью python-pptx

#anaconda #lxml #conda #python-pptx

#anaconda #lxml #conda #python-pptx

Вопрос:

Я столкнулся с проблемой, когда устанавливал python-pptx с помощью conda в очищенной среде: conda install -c conda-forge python-pptx. После успешного завершения установки я попытался импортировать модуль pptx и получил следующую ошибку:

 >>> import pptx
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:UsersSazonovEOAppDataLocalContinuumanaconda3envsnewlibsite-p
ackagespptx__init__.py", line 13, in <module>
    from pptx.api import Presentation  # noqa
  File "C:UsersSazonovEOAppDataLocalContinuumanaconda3envsnewlibsite-p
ackagespptxapi.py", line 17, in <module>
    from .package import Package
  File "C:UsersSazonovEOAppDataLocalContinuumanaconda3envsnewlibsite-p
ackagespptxpackage.py", line 13, in <module>
    from .opc.package import OpcPackage
  File "C:UsersSazonovEOAppDataLocalContinuumanaconda3envsnewlibsite-p
ackagespptxopcpackage.py", line 13, in <module>
    from .oxml import CT_Relationships, serialize_part_xml
  File "C:UsersSazonovEOAppDataLocalContinuumanaconda3envsnewlibsite-p
ackagespptxopcoxml.py", line 12, in <module>
    from lxml import etree
ImportError: DLL load failed: Не найден указанный модуль.
  

Но если бы я установил эту библиотеку (python-pptx) с помощью pip, подобного этому (также в новую очищенную среду):

 pip install python-pptx
  

это работает.
У меня есть следующие версии: версия python — 3.7.1, python-pptx-0.6.17, lxml-4.3.0.

У вас есть какие-либо идеи по поводу этой проблемы?

Комментарии:

1. Странно, вы говорите, что у вас есть lxml , и это указано в python-pptx рецепте в качестве требования, но Python говорит, что не может его найти. Можете ли вы import lxml использовать эту среду или это тоже сбой? Если вы проверите sys.path на Python, находится lxml в одном из этих каталогов?

2. lxml является оболочкой Python для lib2xml и libxslt . Я полагаю, что это библиотеки DLL в Windows, что может означать, что они не могут быть найдены lxml в среде anaconda по какой-то причине (возможно, связанной с PATH). Тот факт, что в сообщениях об ошибках говорится «Ошибка загрузки DLL», а не «Нет модуля с именем lxml», указывает на то, что поиск lxml модуля не является непосредственной проблемой. Возможно, стоит попробовать conda install lxml или какую-то другую команду для переустановки lxml в anaconda, чтобы посмотреть, подключается ли это к базовым C-библиотекам. Также это может помочь: github.com/sci-bots/microdrop/issues/246

Ответ №1:

Переустановка lxml из pkgs / main channel из репозитория anaconda позволяет обойти проблему:

 conda install lxml
  

Следующие пакеты будут ОБНОВЛЕНЫ:

libxml2 conda-forge::libxml2-2.9.8-h9ce36c8_1~ —> pkgs/main::libxm l2-2.9.9-h464c3ec_0 libxslt
conda-forge::libxslt-1.1.32-heafd4d3_ ~ —> pkgs/main ::libxs lt-1.1.33-h579f668_0

Следующие пакеты будут заменены каналом с более высоким приоритетом: … lxml
conda-forge::lxml-4.3.2-py37heafd4d3_0 —> pkgs/main::lxml- 4.3.2-py37h1350720_0 …

Комментарии:

1. Спасибо @Scanny за ваш комментарий выше

Ответ №2:

Прежде всего, попробуйте следующую команду в вашем терминале, чтобы включить conda-forge:

 conda config --add channels conda-forge
  

Во-вторых, запустите следующую команду и через некоторое время введите [y]:

 conda install python-pptx