Python IDLE openpyxl - 运行脚本时的AttributeError

时间:2016-01-13 08:22:52

标签: python shell attr python-idle openpyxl

我正在尝试从脚本中使用openpyxl。

当使用来自IDLE shell的openpyxl时,一切顺利:

Python 2.7.9 |Anaconda 2.2.0 (32-bit)| (default, Dec 18 2014, 17:00:07) [MSC    v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import openpyxl as px
>>> wb = px.workbook.Workbook()
>>> 

我可以使用所有其他openpyxl功能。

然而,当把它放在脚本中时......:

import openpyxl as px
wb = px.workbook.Workbook()

(请注意,脚本被称为/保存为'openpyxl_2.py')

并在IDLE中运行脚本,我收到以下错误:

Python 2.7.9 |Anaconda 2.2.0 (32-bit)| (default, Dec 18 2014, 17:00:07) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 

Traceback (most recent call last):
  File "\\verdc01\userdocs$\wkvdleeden\My Documents\Python excel\openpyxl_2.py", line 1, in <module>
    import openpyxl as px
  File "\\verdc01\userdocs$\wkvdleeden\My Documents\Python excel\openpyxl.py", line 8, in <module>
AttributeError: 'module' object has no attribute 'workbook'
>>>

使用Python 2.7.9和openpyxl 2.3.2(与pip很好地安装)。

问题:

如何从脚本运行我得到上述错误? 如何让它运作?

Post scriptum - 请注意我已经检查了以下主题: cannot import workbook in openpyxlImport error for openpyxlopenpyxl library - jdcal error

1 个答案:

答案 0 :(得分:1)

问题是脚本名为&#34; openpyxl.py&#34;在同一个文件夹中。 导入openpyxl模块时,将导入此本地脚本\模块而不是全局模块。

重命名此文件,它应该有效。 print px.__file__确认实际导入了哪个模块。

  

另一个常见陷阱,尤其是初学者,使用的是本地模块   隐藏标准库或第三方名称的名称   应用程序所依赖的包或模块。一个特别   与这个陷阱发生冲突的令人惊讶的方法是使用这样一个名字   脚本,因为这然后结合前面的“执行主要   模块两次“陷阱导致麻烦。例如,如果试验   了解有关Python套接字模块的更多信息,您可能会倾向于致电   你的实验脚本socket.py。事实证明这是一个非常糟糕的事情   想法,因为使用这样的名称意味着Python解释器不能再使用   在标准库中找到真正的套接字模块,就像显而易见的那样   当前目录中的套接字模块阻碍了:

Source(Nick Coghlan's Python Notes)