关于python:使用Windows 10的conda和poppler安装后无法导入pdftotext

Unable to import pdftotext after installing with conda and poppler, Windows 10

我正在尝试使用pdftotext,但不会导入。

我正在工作的笔记本电脑Lenovo IdeaPad S340上运行Windows 10(64位)。

按照此处和此处的指示(非常有帮助),我:

  • 安装了Microsoft Visual C生成工具。
  • 安装Anaconda。
  • 对于每个步骤,请使用单独的Anaconda3命令获取最新版本的Anaconda并进行更新。我不记得这些命令,也没有再次找到它们。
  • 更新了Microsoft Visual 14。
  • 使用conda通过Anaconda3命令安装poppler:conda install -c conda-forge poppler
  • 使用pip通过Anaconda3命令安装pdftotext:pip install pdftotext
  • 之后:

    这发生在Python 3.8(32位)命令提示符中:

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

    这发生在IDLE的Python 3.75 Shell(64位)中:

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

    这发生在Anaconda3命令提示符下:

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

    这也发生在Anaconda3命令提示符中:

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

    这是否意味着它只能在Python 2中运行?我将如何事先检查?如果仅在Python 2上运行,是否可以推荐将Python 3读入纯文本文件的Python 3软件包/模块/库(有什么不同,顺便说一句?)?

    感谢您的帮助!

    更新:

    我从同一台计算机和OS上的一个新用户开始(另一个用户的名称中有一个空格,因此其文件路径中有一个空格,这可能会引起问题)。我遇到了同样的问题。

    我有Python 3.7.6和3.8.1。通过Anaconda3提示符python -V检查版本时显示的是Python 3.7.6(使用conda info时为3.7.6.final.0)。

    我也有:

    • Anaconda版本" custom",构建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。

    我在这里找到Python:C:\\\\程序文件(x86)\\\\ Microsoft Visual Studio \\\\ Shared \\\\ Python37_64。

    我用眼睛搜索了程序文件,用户文件以及Anaconda Navigator,然后在整个C驱动器中搜索了" pdftotext",但没有找到关于pdftotext的任何信息。 >

    从IDLE的Python 3.7.6 shell尝试也不起作用。

    更新:

    我想通了,有点。 pdftotext不能用作Python导入,因为PyPI中的示例代码使用了它。但是,它确实可以作为Xpdf的一部分的命令行工具工作,在执行步骤之后无需进行其他安装。

    我在Anaconda3 PowerShell命令提示符中使用了该命令:

    pdftotext C:\\filepath\\file.pdf

    然后它创建了一个具有相同名称的文本文件,并将其保存在相同的文件夹中。我在上面链接的Xpdf页面上概述了该命令的其他选项(例如,设置文件名)。

    Buuuut,这不是令人满意的解决方案。我可以执行我的当前用例任务,但需要执行其他步骤,但是仍然无法从Python程序中调用pdftotext。

    更新:

    如果使用Anaconda和conda安装pdftotext,则导入只能在从Anaconda3 shell内的Python解释器中运行它时才起作用。

    因此,我必须首先在Anaconda3 PowerShell中切换到Python解释器模式:python

    然后,我可以无错误地导入pdftotext:import pdftotext

    它看起来像这样:

    1
    2
    3
    4
    5
    (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
    >>>


    pdftotext是命令,而不是模块。
    因此,如果要在Python中执行此命令,则可以编写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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"))


    好的,我知道了!如果使用Anaconda和conda安装pdftotext,则导入它似乎仅在从Anaconda3 shell内的Python解释器中运行它时才起作用。

    因此,我必须首先在Anaconda3 PowerShell中切换到Python解释器模式:
    python

    然后,我可以无错误地导入pdftotext:
    import pdftotext

    它看起来像这样:

    1
    2
    3
    4
    5
    (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页面上概述了该命令的其他选项(例如,设置文件名)。

    从命令行使用它的第二种解决方案的问题在于,如果以后要对文本文件执行某些操作,则必须运行另一个命令或脚本。它所做的只是将其读取到文件中。