我正在尝试从脚本中使用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 openpyxl, Import error for openpyxl, openpyxl library - jdcal error
答案 0 :(得分:1)
问题是脚本名为&#34; openpyxl.py&#34;在同一个文件夹中。
导入openpyxl
模块时,将导入此本地脚本\模块而不是全局模块。
重命名此文件,它应该有效。 print px.__file__
确认实际导入了哪个模块。
另一个常见陷阱,尤其是初学者,使用的是本地模块 隐藏标准库或第三方名称的名称 应用程序所依赖的包或模块。一个特别 与这个陷阱发生冲突的令人惊讶的方法是使用这样一个名字 脚本,因为这然后结合前面的“执行主要 模块两次“陷阱导致麻烦。例如,如果试验 了解有关Python套接字模块的更多信息,您可能会倾向于致电 你的实验脚本socket.py。事实证明这是一个非常糟糕的事情 想法,因为使用这样的名称意味着Python解释器不能再使用 在标准库中找到真正的套接字模块,就像显而易见的那样 当前目录中的套接字模块阻碍了: