模块导入错误:没有名为pytesseract的模块。

7
我正在按照这个指南 https://realpython.com/blog/python/setting-up-a-simple-ocr-server/ 进行操作,到了运行 cli.py 的部分 python flask_server/cli.py,但是出现以下错误:

python cli.py
Traceback (most recent call last):
  File "cli.py", line 3, in <module>
    import pytesseract
ImportError: No module named pytesseract

我该如何解决这个问题?

我还发现我有多个版本的Python。我安装了最新更新的Linux Kali。

另外,他运行命令像 python flask_server/cli.py - 那个flask_server在哪里?我只是像 python cli.py 一样运行它(我在某个目录中创建了这个文件)。


您必须安装pytesseract。它不是标准库的一部分。 - Two-Bit Alchemist
我已经按照教程的步骤进行操作,所以应该已经安装完成了。 - Bogdan Daniel
你运行过这条命令 pip install -r requirements.txt 吗? 这会根据 requirement.txt 文件中的内容安装所有所需的包,如此问题所述。 - Bertrand Caron
你提到你安装了多个Python版本,所以我强烈怀疑你的cli.pypytesseract是相对于两个不同的版本进行安装的。解决方案:在你运行脚本的版本下安装pytesseract,或者使用含有pytesseract的版本运行脚本。 - Two-Bit Alchemist
我使用了一个脚本来显示正在运行 cli.py 的 Python 上安装的模块,结果只返回了 ['xsser==1.6']。 - Bogdan Daniel
这个命令可以正常工作:pip install pytesseract - Bogdan Daniel
4个回答

17

Python import错误通常可以归结为以下三种情况(无论是您开发的模块还是作为软件包分发的模块):

  1. 您没有安装所需的软件包。在Google中搜索pytesseract告诉我它是一个OCR,可以通过运行pip install pytesseract在您喜欢的shell中使用Python软件包管理器工具进行分发和安装。

  2. 您已经安装了软件包,但它不在您的Python路径中。

  3. (较少见)您已经安装了软件包,并且它在您的Python路径中,但您使用了Python已经使用的名称,两者冲突。

在您的情况下,我强烈认为这是第一种情况。第2和第3种情况可以通过调用python -v your_script.py来评估,如this answer所述。


我运行了一个脚本来显示正在运行cli.py的Python上安装的模块,但我只得到了['xsser==1.6']。 - Bogdan Daniel

13

我曾经遇到过类似的错误。因此,我希望能够帮助那些遇到这类问题的人。

在我的情况下, 我尝试在树莓派3上使用pytesseract库运行Python代码。

$ pip install pillow
$ pip install pytesseract

(跟随 https://www.pyimagesearch.com/2017/07/10/using-tesseract-ocr-python/)


然后,我创建了一个 example.py 文件进行测试。

example.py

try:

    import Image

except ImportError:

    from PIL import Image

from pytesseract import *

print(pytesseract.image_to_string(Image.open('YOUR_IMAGE_PATH')))

然后,当我运行这段代码时,像你一样,我得到了以下错误。 ImportError: No module named pytesseract


在看了@Bertrand Caron的答案之后,我找到了解决方案。我的问题是软件包库路径。

我也安装了多个Python版本,2.7和3.5,就像作者一样。 当我在Linux上运行命令$python --version时,结果是Python 2.7.13。

在我的情况下,当我安装pytesseract软件包时, 它被存储在"/usr/local/lib/python3.5/dist-packages/pytesseract"中。

当我运行$python -v example.py时,我发现所引用的软件包路径上面的pytesseract软件包目录不同。

参见。

已安装的pytesseract路径:/usr/local/lib/python3.5/dist-packages/pytesseract

实际引用的库路径,在运行时:/usr/lib/python2.7/dist-packages/

因此,我将位于"/usr/local/lib/python3.5/dist-packages/pytesseract"的pytesseract复制到"/usr/lib/python2.7/dist-packages/"中

然后,问题解决了!


6
在我的情况下,我正在Jupyter中运行它,因此我使用了这个命令:
! pip install --user pytesseract

但是我忘记重新启动内核了。 在安装包之后,您需要重新启动内核


3

我曾遇到同样的错误。我的解决方案是

$ pip3 install pytesseract

由于我同时安装了Python 2和Python 3。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接