温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python 2.7 - Why can't I import WD_ALIGN_PARAGRAPH from docx.enum.text?
pycharm python-2.7 python-docx

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

发布于 2020-05-17 18:17:23

我将一些代码从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'”。

查看更多

提问者
Martin Clever
被浏览
3
scanny 2019-07-25 02:37

您可以改用以下方法:

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

然后替换以前出现过的WD_PARAGRAPH_ALIGNMENT任何地方WD_ALIGN_PARAGRAPH

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

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