1

我正在使用 Python 3.5 和 Anaconda 发行版。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。

有什么想法吗?提前致谢。

4

1 回答 1

2

Spyder 在你的控制台和你的脚本之间有一个共享的命名空间。我在这里回答了这个问题的反面。

控制台中定义的任何内容都可以在您运行的脚本的命名空间中访问。模块导入缓存在所有脚本中,因此您可以在控制台中导入一次,然后在所有脚本中无限期地访问它(直到您重置内核)。

您不应依赖此行为,因为该脚本在 Spyder 之外无法运行。相反,您应该在脚本顶部显式导入模块。

在这种情况下,您可能已经调用了脚本tabula.py并且应该重命名它。

于 2018-09-24T19:59:25.377 回答