Podczas importu docx w python3.3 mam błąd ImportError: brak modułu o nazwie „wyjątki”


88

kiedy importuję docx, mam ten błąd:

>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'

Jak naprawić ten błąd ( python3.3, docx 0.2.4)?


2
exceptionsModuł nie istnieje w Pythonie 3 (wyjątki określone dodano do __builtin__tak). Wygląda na to, że konwersja DocX do Python 3 nie została jeszcze zakończona.
Frédéric Hamidi

Odpowiedzi:


166

Jeśli używasz Pythona 3x, nie rób pip install docxtego zamiast tego

pip install python-docx 

Jest kompatybilny z Pythonem 3.x

Oficjalna dokumentacja dostępna tutaj: https://pypi.org/project/python-docx/


to rozwiązało mój problem, zaktualizowałem oficjalny link w dokumencie
Roshan Bagdiya

Pracowało dla mnie z Pythonem 3.7.3.
Frank M

2
... a aby usunąć docx, możesz zrobić pip uninstall docxnajpierw, aby utrzymać go w czystości!
Jean-Francois T.

15
  1. Odinstaluj moduł docx za pomocą pip uninstall docx
  2. Pobierz python_docx-0.8.6-py2.py3-none-any.whlplik z http://www.lfd.uci.edu/~gohlke/pythonlibs/
  3. Uruchom, pip install python_docx-0.8.6-py2.py3-none-any.whlaby ponownie zainstalować docx. To rozwiązało dla mnie płynnie powyższy błąd importu. Tylko po to, aby zapewnić rozwiązanie ...

9

Jeśli chcesz użyć import docx, pamiętaj, aby zainstalować python-docx , a nie docx .Możesz zainstalować moduł, uruchamiając pip install python-docx.

Nazwa instalacji docx dotyczy innego modułu. Jednak

kiedy zamierzasz zaimportować moduł python-docx, musisz uruchomić import docx, nie import python-docx.

jeśli nadal chcesz używać modułu docx, to :

Przede wszystkim musisz upewnić się, że moduł docx jest zainstalowany. Jeśli nie, po prostu biegnij pip install docx. Jeśli pokazuje `` * wymaganie już spełnione * '', rozwiązanie jest następujące:

  1. Przejdź do biblioteki, aby znaleźć plik docx.py , musisz przejść do katalogu, w którym zainstalowałeś Pythona, a następnie \ Lib \ site-packages \ i znaleźć plik docx.py
  2. Otwórz plik docx.py w edytorze tekstu i znajdź ten kod

    from exceptions import PendingDeprecationWarning
    
  3. Zamień powyższy kod na
try:
    from exceptions import PendingDeprecationWarning
except ImportError:
    pass
  1. Zapisz plik
  2. Teraz możesz bez problemu uruchomić import docx w Pythonie 3.x.

8

Jeśli używasz pythona 3.x, upewnij się, że masz zainstalowany zarówno python-docx, jak i docx .

Instalowanie python-docx:

pip install python-docx

Instalowanie docx:

pip install docx

6

W Pythonie 3 moduł wyjątków został usunięty, a wszystkie standardowe wyjątki zostały przeniesione do modułu wbudowanego. Oznacza to, że nie ma już potrzeby wyraźnego importu jakichkolwiek standardowych wyjątków.

skopiowane z



3

Problem, jak zauważono wcześniej w komentarzach, polega na tym, że moduł docx nie był kompatybilny z Pythonem 3. Zostało to naprawione w tym żądaniu ściągnięcia na github: https://github.com/mikemaccana/python-docx/pull/67

Ponieważ wyjątek jest teraz wbudowany, rozwiązaniem jest nie importowanie go.

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

Czy mógłbyś również zamieścić tutaj powiązany fragment kodu?
Kamiccolo

0

Musisz sprawić, by działał z pythonem3.

                     sudo pip3 install python-docx

Ta instalacja działała dla mnie w Python3 bez żadnych dalszych dodatków.

             python3
             >> import docx

PS: Zauważ, że 'pip install python-docx' lub apt-get python3-docx nie są przydatne.


Naprawdę nie można powiedzieć, że `` pip install python-docx '' nie jest przydatne, ponieważ robi dokładnie to samo, co polecenie pip3, jeśli jesteś w środowisku python3
Javatar

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.