Невозможно импортировать pdftotext после установки с помощью conda и poppler, Windows 10

Я пытаюсь использовать pdftotext, но он не импортируется.

Я использую Windows 10 (64-разрядная версия) на рабочем ноутбуке Lenovo IdeaPad S340.

Следуя указаниям здесь и здесь (что было очень полезно), я:

  1. Установлены инструменты сборки Microsoft Visual C++.
  2. Установил Анаконду.
  3. Получил последнюю версию Anaconda и обновил ее, используя отдельные команды Anaconda3 для каждого из этих шагов. Я не помню команды, и не нашел их снова.
  4. Обновлен Microsoft Visual 14.
  5. Используется conda для установки poppler с помощью команды Anaconda3: conda install -c conda-forge poppler
  6. Используется pip для установки pdftotext с помощью команды Anaconda3: pip install pdftotext

После этого:

Это происходит в командной строке Python 3.8 (32-разрядная версия):

>>> import pdftotext
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pdftotext'
>>>

Это происходит в оболочке IDLE Python 3.75 (64 бит):

>>> import pdftotext
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import pdftotext
ModuleNotFoundError: No module named 'pdftotext'
>>> 

Это происходит в командной строке Anaconda3:

import pdftotext
'import' is not recognized as an internal or external command,
operable program or batch file.

Это также происходит в командной строке Anaconda3:

pip install pdftotext
Requirement already satisfied: pdftotext in c:\programdata\anaconda3\lib\site-packages (2.1.4)

Означает ли это, что он работает только на Python 2? Как бы я проверил это заранее? Если он работает только на Python 2, можете ли вы порекомендовать пакет/модуль/библиотеку Python 3 (кстати, в чем разница?) для чтения PDF в обычный текстовый файл?

Спасибо за вашу помощь!

Обновление:

Я начал с нового пользователя на той же машине и с той же ОС (у другого пользователя был пробел в имени, поэтому в его пути к файлу был пробел, что может вызвать проблемы). Я сталкиваюсь с той же проблемой.

У меня Python 3.7.6 и 3.8.1. Python 3.7.6 — это то, что отображается при проверке версии через приглашение Anaconda3 python -V (3.7.6.final.0 при использовании conda info).

У меня тоже есть:

  • Версия Anaconda «пользовательская», сборка py37_1.
  • conda 4.8.2, py37_0, канал conda-forge.
  • поплер 0.84.0, h1affe6b_0, conda-forge.
  • pdftotext 2.1.4, pypi_0, pypi.

Я нашел Python здесь: C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64.

Я искал глазами все программные файлы, пользовательские файлы и Anaconda Navigator, я провел поиск по всему диску C для «pdftotext» и ничего не нашел о pdftotext.

Попытка из оболочки IDLE Python 3.7.6 также не сработала.

Обновление:

Я разобрался, вроде. pdftotext не работает как импорт Python, поскольку его использует пример кода в PyPI. Но он работает как инструмент командной строки, являющийся частью Xpdf, без дополнительная установка после шагов.

Я использовал команду в командной строке Anaconda3 PowerShell:

pdftotext C:\filepath\file.pdf

Затем он создал текстовый файл с тем же именем и сохранил его в той же папке. Существуют дополнительные параметры для команды, описанной на странице Xpdf, на которую я ссылался выше (например, установка имени файла).

Ноуууу, это решение неудовлетворительное. Я могу позаботиться о своей текущей задаче варианта использования с помощью дополнительного шага, но я все еще не могу вызвать pdftotext из программы Python.

Обновление:

Если вы устанавливаете pdftotext с помощью Anaconda и conda, то его импорт работает только тогда, когда вы запускаете его в интерпретаторе Python из оболочки Anaconda3.

Итак, сначала мне пришлось переключиться в режим интерпретатора Python в Anaconda3 PowerShell: python

Затем я мог импортировать pdftotext без ошибок: import pdftotext

Это выглядело так:

(user)> python
Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pdftotext
>>> 

person Kaleb Coberly    schedule 29.01.2020    source источник
comment
Можете ли вы поделиться точными шагами, которые вы предприняли для установки библиотеки, в том числе с использованием conda? Когда вы пытались импортировать библиотеку, вы использовали установку Python из правильной среды?   -  person AMC    schedule 29.01.2020
comment
ты пробовал: pip3 install pdftotext?   -  person SuperKogito    schedule 29.01.2020
comment
@SuperKogito, pip3 не распознается как команда.   -  person Kaleb Coberly    schedule 29.01.2020
comment
@AMC, я не хотел переписывать направления, на которые я ссылался. Я выполнил эти шаги в том порядке, который я описал выше.   -  person Kaleb Coberly    schedule 29.01.2020
comment
Похоже, вы установили библиотеку в одной версии Python, пытаясь вызвать ее в другой. Ну, вы можете попробовать установить библиотеку из ipython IDLE, используя !pip install pdftotext (это обычно работает для меня на Spyder), но я бы не советовал этот хак. Лучшее, что вы можете сделать, это сначала выяснить, какие версии Python у вас есть и где они находятся. Вы можете обратиться к этому, чтобы проверьте версии. Не стесняйтесь опубликовать вывод, это должно помочь нам лучше понять проблему.   -  person SuperKogito    schedule 29.01.2020
comment
Ладно, наконец-то смог вернуться к этому проекту! Я начал с нового пользователя на той же машине и с той же ОС (у другого пользователя был пробел в имени, поэтому в его пути к файлу был пробел, что может вызвать проблемы). Я сталкиваюсь с той же проблемой. У меня Python 3.7.6 и 3.8.1. Python 3.7.6 — это то, что отображается при проверке версии через приглашение Anaconda3 (3.7.6.final.0 при использовании conda info). У меня также есть: пользовательская версия Anaconda, сборка py37_1; conda 4.8.2, py37_0, канал conda-forge; poppler 0.84.0, h1affe6b_0, conda-forge; и pdftotext 2.1.4, pypi_0, pypi.   -  person Kaleb Coberly    schedule 05.02.2020
comment
Я нашел Python здесь: C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64. Но я искал во всех программных файлах, пользовательских файлах и в Anaconda Navigator и ничего не нашел о pdftotext.   -  person Kaleb Coberly    schedule 05.02.2020
comment
@SuperKogito, да, я никогда не пробовал запускать интерпретатор Python из оболочки Anaconda3. Так было все время.   -  person Kaleb Coberly    schedule 11.02.2020


Ответы (2)


pdftotext это команда, а не модуль. Итак, если вы хотите выполнить эту команду в Python, вы можете написать

import os

file_path = "C:\documents\mypdf.pdf"

# writing data in variable
text = os.popen("pdftotext {}".format(file_path)).read()

# writing data in file
os.system("pdftotext {} {}".format(file_path, "data.txt"))
person Artyom Vancyan    schedule 09.02.2020
comment
Спасибо! Я собираюсь попробовать это. Между прочим, я только что вернулся, чтобы обновить, потому что понял, что проблема с самого начала заключалась в том, что я никогда не пытался использовать оболочку Anaconda3 в качестве интерпретатора Python. Таким образом, ввод python в командной строке для переключения в режим интерпретатора Python, а затем import pdftotext пока не возвращает ошибок. Это определенно модуль, который вы импортируете и вызываете в своем коде, как вы можете видеть на pypi.org/project. /pdftotext. - person Kaleb Coberly; 11.02.2020
comment
Поэтому я рекомендую вам скачать Linux на свой компьютер и избегать таких исключений. - person Artyom Vancyan; 12.02.2020

Хорошо, я понял это! Если вы устанавливаете pdftotext с помощью Anaconda и conda, то его импорт работает только тогда, когда вы запускаете его в интерпретаторе Python из оболочки Anaconda3.

Итак, сначала мне пришлось переключиться в режим интерпретатора Python в Anaconda3 PowerShell: python

Затем я мог импортировать pdftotext без ошибок: import pdftotext

Это выглядело так:

(user)> python
Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pdftotext
>>> 

Увы, второе частичное решение состоит в том, что он работает как инструмент командной строки, являющийся частью Xpdf.

Мне не понадобилась дополнительная установка после шагов, предпринятых в посте о проблеме. Я использовал команду в командной строке Anaconda3 PowerShell:

pdftotext C:\filepath\file.pdf

Затем он создал текстовый файл с тем же именем и сохранил его в той же папке. Существуют дополнительные параметры для команды, описанной на странице Xpdf, на которую я ссылался выше (например, установка имени файла).

Проблема со вторым решением, использующим его из командной строки, заключается в том, что если вы хотите что-то сделать с текстовым файлом впоследствии, вам нужно запустить другую команду или сценарий. Все, что он делает, это читает его в файл.

person Kaleb Coberly    schedule 08.02.2020