Khi nhập docx trong python3.3, tôi gặp lỗi ImportError: Không có mô-đun nào có tên 'ngoại lệ'


88

khi nhập docxtôi gặp lỗi này:

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

Làm thế nào để sửa lỗi này ( python3.3, docx 0.2.4)?


2
Các exceptionsmô-đun không tồn tại trong Python 3 (trường hợp ngoại lệ được xác định có được thêm vào __builtin__anyway). Có vẻ như quá trình chuyển đổi DocX sang Python 3 vẫn chưa hoàn tất.
Frédéric Hamidi

Câu trả lời:


166

Nếu bạn đang sử dụng python 3x, đừng làm pip install docxthay vào đó

pip install python-docx 

Nó tương thích với python 3.x

Tài liệu chính thức có tại đây: https://pypi.org/project/python-docx/


điều này đã giải quyết được vấn đề của tôi, được cập nhật liên kết chính thức trong tài liệu
Roshan Bagdiya

Làm việc cho tôi, với Python 3.7.3.
Frank M

2
... và để xóa docx, bạn có thể làm pip uninstall docxtrước tiên để giữ cho nó sạch sẽ!
Jean-Francois T.

15
  1. Gỡ cài đặt mô-đun docx với pip uninstall docx
  2. Tải xuống python_docx-0.8.6-py2.py3-none-any.whltệp từ http://www.lfd.uci.edu/~gohlke/pythonlibs/
  3. Chạy pip install python_docx-0.8.6-py2.py3-none-any.whlđể cài đặt lại docx. Điều này đã giải quyết lỗi nhập ở trên một cách suôn sẻ cho tôi. Chỉ để cung cấp giải pháp ...

9

Khi muốn sử dụng import docx, hãy đảm bảo cài đặt python-docx , không phải docx . Bạn có thể cài đặt mô-đun bằng cách chạy pip install python-docx.

Tên cài đặt docx dành cho một mô-đun khác Tuy nhiên,

khi bạn định nhập mô-đun python-docx, bạn sẽ cần chạy import docxchứ không phải import python-docx.

nếu bạn vẫn muốn sử dụng mô-đun docx thì :

Trước hết, bạn cần đảm bảo rằng mô-đun docx đã được cài đặt. Nếu không thì chỉ cần chạy pip install docx. Nếu nó hiển thị '* yêu cầu đã được thỏa mãn *' thì giải pháp là:

  1. Đi tới thư viện để tìm tệp docx.py , bạn sẽ cần phải chuyển đến thư mục nơi bạn đã cài đặt python sau đó đến \ Lib \ site-package \ và tìm tệp docx.py
  2. Mở tệp docx.py trong trình soạn thảo văn bản và tìm mã này

    from exceptions import PendingDeprecationWarning
    
  3. Thay thế mã trên bằng
try:
    from exceptions import PendingDeprecationWarning
except ImportError:
    pass
  1. Lưu các tập tin
  2. Bây giờ bạn có thể chạy mô-đun import docx trong Python 3.x mà không gặp bất kỳ sự cố nào

8

Nếu bạn đang sử dụng python 3.x, hãy đảm bảo rằng bạn đã cài đặt cả python-docx & docx .

Cài đặt python-docx:

pip install python-docx

Cài đặt docx:

pip install docx

6

Trong Python 3, mô-đun ngoại lệ đã bị loại bỏ và tất cả các ngoại lệ tiêu chuẩn đã được chuyển sang mô-đun nội trang. Do đó, có nghĩa là không cần phải nhập rõ ràng bất kỳ trường hợp ngoại lệ tiêu chuẩn nào.

được sao chép từ



3

Vấn đề, như đã được lưu ý trước đó trong nhận xét, là mô-đun docx không tương thích với Python 3. Nó đã được khắc phục trong pull-request này trên github: https://github.com/mikemaccana/python-docx/pull/67

Vì ngoại lệ hiện đã được tích hợp sẵn, giải pháp là không nhập ngoại lệ đó.

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

Bạn cũng có thể đăng đoạn mã liên quan ở đây không?
Kamiccolo

0

Bạn cần làm cho nó hoạt động với python3.

                     sudo pip3 install python-docx

Cài đặt này đã hoạt động đối với tôi trong Python3 mà không cần thêm bất kỳ bổ sung nào.

             python3
             >> import docx

Tái bút: Lưu ý rằng 'pip install python-docx' hoặc apt-get python3-docx không hữu ích.


Bạn không thể thực sự nói rằng 'pip install python-docx' là không hữu ích, vì nó hoạt động giống hệt như lệnh pip3 nếu bạn đang ở trong môi trường python3
Javatar

-1

Tôi đã gặp vấn đề tương tự, nhưng pip install python-docxđã hiệu quả với tôi, tôi đang sử dụng python 3.7.1

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.