Я использую 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 и первый тип "import tabula" в консоли IPython перед запуском кода, он работает отлично. Если я перезапущу ядро, я получаю ту же ошибку, пока не закрою и не открою Spyder.
Какие-нибудь мысли? Заранее спасибо.
Spyder имеет общее пространство имен между консолью и вашими сценариями. Я ответил, реверс этой проблемы здесь.
Все, что определено в консоли, будет доступно в пространстве имен сценариев, которые вы запускаете. Импорт модулей кэшируется по всем вашим сценариям, поэтому вы можете импортировать его один раз в консоли, а затем неограниченно получить доступ к нему во всех своих сценариях (до тех пор, пока вы не сбросите ядро).
Вы не должны полагаться на это поведение, потому что сценарий не будет работать за пределами Spyder. Вместо этого вы должны явно импортировать модуль в верхней части вашего скрипта.
В этом случае, вероятно, вы назвали свой скрипт tabula.py
и вы должны переименовать его.
import tabula; print(tabula.__file__)
a) после перезапуска ядра и только импорта в сценарий и b) перезапуска ядра и импорта только в консоли?
tabula.py
?