При импорте docx в python3.3 у меня возникает ошибка ImportError: нет модуля с именем «исключения»


88

когда я импортирую, у docxменя есть эта ошибка:

>File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/docx-0.2.4-py3.3.egg/docx.py", line 30, in <module>
        from exceptions import PendingDeprecationWarning
    ImportError: No module named 'exceptions'

Как исправить эту ошибку ( python3.3, docx 0.2.4)?


2
exceptionsМодуль не существует в Python 3 (исключения определены были добавлены в __builtin__любом случае). Похоже, преобразование DocX в Python 3 еще не завершено.
Frédéric Hamidi

Ответы:


166

Если вы используете python 3x, не используйте pip install docxвместо этого

pip install python-docx 

Он совместим с python 3.x

Официальная документация доступна здесь: https://pypi.org/project/python-docx/


это решило мою проблему, обновила официальную ссылку в документе
Рошан Багдия 02

Работал у меня с Python 3.7.3.
Frank M

2
... а чтобы удалить docx, вы можете pip uninstall docxсначала сохранить его в чистоте!
Жан-Франсуа Т.

15
  1. Удалите модуль docx с помощью pip uninstall docx
  2. Загрузите python_docx-0.8.6-py2.py3-none-any.whlфайл с http://www.lfd.uci.edu/~gohlke/pythonlibs/
  3. Запустите, pip install python_docx-0.8.6-py2.py3-none-any.whlчтобы переустановить docx. Это плавно решило указанную выше ошибку импорта. Просто чтобы предложить решение ...

9

Если вы хотите использовать import docx, убедитесь, что вы установили python-docx , а не docx. Вы можете установить модуль, запустив pip install python-docx.

Установочное имя docx предназначено для другого модуля. Однако

когда вы собираетесь импортировать модуль python-docx, вам нужно будет запустить import docx, а не import python-docx.

если вы все еще хотите использовать модуль docx, тогда :

Прежде всего, вам необходимо убедиться, что модуль docx установлен. Если нет, то просто беги pip install docx. Если он показывает «* требование уже выполнено *», то решение:

  1. Перейдите в библиотеку, чтобы найти файл docx.py , вам нужно перейти в каталог, в который вы установили python, затем \ Lib \ site-packages \ и найти файл docx.py
  2. Откройте файл docx.py в текстовом редакторе и найдите этот код

    from exceptions import PendingDeprecationWarning
    
  3. Замените приведенный выше код на
try:
    from exceptions import PendingDeprecationWarning
except ImportError:
    pass
  1. Сохраните файл
  2. Теперь вы можете без проблем запустить модуль import docx в Python 3.x

8

Если вы используете python 3.x, убедитесь, что у вас установлены как python-docx, так и docx .

Установка python-docx:

pip install python-docx

Установка docx:

pip install docx

6

В Python 3 модуль исключений был удален, а все стандартные исключения перенесены во встроенный модуль. Это означает, что больше нет необходимости делать явный импорт каких-либо стандартных исключений.

скопировано из



3

Проблема, как отмечалось ранее в комментариях, заключается в том, что модуль docx несовместим с Python 3. Это было исправлено в этом pull-запросе на github: https://github.com/mikemaccana/python-docx/pull/67

Поскольку исключение теперь встроено, решение состоит в том, чтобы не импортировать его.

docx.py
@@ -27,7 +27,12 @@
 except ImportError:
     TAGS = {}

-from exceptions import PendingDeprecationWarning
+# Handle PendingDeprecationWarning causing an ImportError if using Python 3
+try:
+    from exceptions import PendingDeprecationWarning
+except ImportError:
+    pass
+
 from warnings import warn

 import logging

Не могли бы вы также разместить здесь фрагмент кода?
Kamiccolo

0

Вам нужно заставить его работать с python3.

                     sudo pip3 install python-docx

Эта установка работала для меня на Python3 без каких-либо дополнительных дополнений.

             python3
             >> import docx

PS: обратите внимание, что pip install python-docx или apt-get python3-docx бесполезны.


Вы не можете сказать, что «pip install python-docx» бесполезен, поскольку он делает то же самое, что и команда pip3, если вы находитесь в среде python3
Javatar,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.