Під час імпорту 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 ще не завершено.
Фредерік Хаміді

Відповіді:


166

Якщо ви використовуєте python 3x, не робіть pip install docxцього

pip install python-docx 

Він сумісний з python 3.x

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


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

Працював у мене, з 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-пакети \ і знайти файл docx.py
  2. Відкрийте файл docx.py у текстовому редакторі та знайдіть цей код

    from exceptions import PendingDeprecationWarning
    
  3. Замініть наведений вище код на
try:
    from exceptions import PendingDeprecationWarning
except ImportError:
    pass
  1. Збережіть файл
  2. Тепер ви можете без проблем запустити модуль імпорту 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. Це було виправлено в цьому запиті на виклик на 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.