เมื่อนำเข้า docx ใน python3.3 ฉันมีข้อผิดพลาด ImportError: ไม่มีโมดูลชื่อ 'exceptions'


94

เมื่อฉันนำเข้า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โมดูลไม่ได้อยู่ในหลาม 3 (ข้อยกเว้นที่กำหนดไว้มีถูกเพิ่มเข้าไป__builtin__แล้ว) ดูเหมือนการแปลง DocX เป็น Python 3 จะยังไม่สมบูรณ์
Frédéric Hamidi

คำตอบ:


174

หากคุณใช้ python 3x อย่าทำpip install docxแทน

pip install python-docx 

เข้ากันได้กับ python 3.x

ดูเอกสารอย่างเป็นทางการที่นี่: https://pypi.org/project/python-docx/


สิ่งนี้แก้ปัญหาของฉันได้อัปเดตลิงก์อย่างเป็นทางการในเอกสาร
Roshan Bagdiya

ทำงานให้ฉันด้วย Python 3.7.3
Frank M

2
... และที่จะเอาdocxคุณสามารถทำpip uninstall docxครั้งแรกเพื่อให้มันสะอาด!
Jean-Francois T.

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 ใหม่ สิ่งนี้แก้ไขข้อผิดพลาดในการนำเข้าข้างต้นได้อย่างราบรื่นสำหรับฉัน เพียงเพื่อหาทางออก ...

10

เมื่อต้องการใช้import docxให้แน่ใจว่าได้ติดตั้งหลาม docx , ไม่docxpip install python-docxเตอร์คุณสามารถติดตั้งโมดูลโดยการเรียกใช้

ชื่อการติดตั้งdocx ใช้สำหรับโมดูลอื่นอย่างไรก็ตาม

เมื่อคุณกำลังจะนำเข้าโมดูลหลาม docx คุณจะต้องทำงาน ไม่ได้import docximport 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 ถูกลบออกและข้อยกเว้นมาตรฐานทั้งหมดถูกย้ายไปยังโมดูลในตัว ดังนั้นหมายความว่าไม่จำเป็นต้องนำเข้าข้อยกเว้นมาตรฐานใด ๆ อย่างชัดเจนอีกต่อไป

คัดลอกมาจาก


6

คุณอาจจะติดตั้งdocxไม่ใช่python-docx

คุณสามารถดูสิ่งนี้สำหรับการติดตั้ง python-docx

http://python-docx.readthedocs.io/en/latest/user/install.html#install


ไม่พบโมดูลข้อยกเว้นคือข้อผิดพลาดที่ปรากฏขึ้นเมื่อติดตั้งไลบรารีที่ไม่ถูกต้อง
juan Isaza

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
The Javatar

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.