为什么不能从docx.enum.text导入WD_ALIGN_PARAGRAPH?

时间:2019-07-24 18:20:25

标签: python-2.7 pycharm python-docx

我将一些代码从IDLE 3.5(64位)转移到pycharm(Python 2.7)。大多数代码仍在工作,例如,我可以从docx.enum.text导入WD_LINE_SPACING,但是由于某些原因,我无法导入WD_ALIGN_PARAGRAPH。

起初,几乎没有任何进口商品有效,但后来我做到了
pip安装python-docx
代替
pip安装docx
除WD_ALIGN_PARAGRAPH之外,大多数导入都有效。

# works
from __future__ import print_function
import xlrd
import xlwt
import os
import subprocess
from calendar import monthrange
import datetime
from docx import Document
from datetime import datetime
from datetime import date
from docx.enum.text import WD_LINE_SPACING
from docx.shared import Pt

# does not work
from docx.enum.text import WD_ALIGN_PARAGRAPH

我没有收到任何错误消息,但是Pycharm将这一行标记为错误: “在'text.py'中找不到引用'WD_ALIGN_PARAGRAPH'”。

2 个答案:

答案 0 :(得分:0)

您可以改用它:

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

,然后用WD_PARAGRAPH_ALIGNMENT代替WD_ALIGN_PARAGRAPH

发生这种情况的原因是,实际的枚举对象被命名为WD_PARAGRAPH_ALIGNMENT,并且应用了一个修饰符,该修饰符还允许将该对象引用为WD_ALIGN_PARAGRAPH(它稍短一些,而且可能更清晰) )。我希望PyCharm中的语法检查器可以对直接模块属性进行操作,并且不会使用由Python解析器/编译器解决的别名。

有趣的是,我希望您的代码都能正常工作。但是要摆脱烦人的消息,您可以使用基本名称。

答案 1 :(得分:0)

如果某人使用了pylint,则可以通过在导入行末尾添加# pylint: disable=E0611来轻松抑制它。