我在Anaconda发行版中使用Python 3.5。已安装tabula-py版本1.1.1。当我运行以下简单程序时:
import tabula
df = tabula.read_pdf("sample.pdf", pages=1, encoding="ISO-8859-1")
df.columns = df.iloc[0]
df.drop(0, inplace=True)
我收到以下错误消息:
AttributeError: module 'tabula' has no attribute 'read_pdf'
但是:如果我打开Spyder并在运行代码之前先在IPython控制台中键入“ import tabula”,则它运行得很好。如果我重新启动内核,则会遇到相同的错误,直到关闭并重新打开Spyder。
有什么想法吗?预先感谢。
答案 0 :(得分:2)
Spyder在控制台和脚本之间有一个共享的名称空间。我回答了与此问题相反的问题here。
在控制台中定义的任何内容都可以在您运行的脚本的名称空间中访问。模块导入被缓存在所有脚本中,因此您可以在控制台中将其导入一次,然后无限期地在所有脚本中访问它(直到重置内核)。
您不应依赖此行为,因为该脚本无法在Spyder之外运行。相反,您应该在脚本顶部显式导入模块。
在这种情况下,您可能已经调用了脚本tabula.py
,并且应该对其进行重命名。