【问题标题】:Why can't I import WD_ALIGN_PARAGRAPH from docx.enum.text?为什么我不能从 docx.enum.text 导入 WD_ALIGN_PARAGRAPH?
【发布时间】:2019-12-02 23:16:28
【问题描述】:

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

起初,几乎没有导入工作,但我做到了
点安装 python-docx
而不是
点安装 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’”。

【问题讨论】:

    标签: python-2.7 pycharm python-docx


    【解决方案1】:

    您可以改用这个:

    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    

    然后在 WD_ALIGN_PARAGRAPH 之前出现的地方替换 WD_PARAGRAPH_ALIGNMENT

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 在 pylint 以某种方式涉及此问题的问题中是否有任何建议?
      • 不,但是如果他们以某种方式(就像我一样)在 Google 中找到这个问题,这些信息可以帮助我和(在我看来)许多其他人。 OP 很久以前就得到了想要的答案。这种想法是错误的吗?因为我对此不太有信心。
      • 答案应该与他们发布的问题相关。在这种情况下,问题是关于导入,但您的答案是关于抑制 pylint。我看不出问题和你的答案之间有任何联系。如果您觉得有一个明确的链接,最好edit您的答案并解释为什么这个答案可能会帮助有同样问题的人。如果没有链接,您可以写一个新问题并自己回答。
      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 2018-05-05
      • 1970-01-01
      • 2018-08-30
      • 2020-12-23
      • 2018-01-12
      • 2021-11-24
      • 2020-04-24
      相关资源
      最近更新 更多