我试图用Maverick在Python中导入tesseract,但是我得到了以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "tesseract.py", line 26, in <module>
_tesseract = swig_import_helper()
File "tesseract.py", line 18, in swig_import_helper
import _tesseract
ImportError: No module named _tesseract我按照以下步骤安装tesseract:https://code.google.com/p/python-tesseract/wiki/HowToCompilePythonTesseractForMacMountainLion
我该怎么做才能解决这个问题?
更新:
python setup.py构建的追溯
os=darwin
Current Version : tesseract
~~~cv_pc~~~
{'extra_link_args': ['not', 'found', 'sh:', 'command', 'pkg-config:']}
['extra_link_args']
Traceback (most recent call last):
File "setup.py", line 160, in <module>
libname="open"+item.split("libopen")[1].split(".")[0]
IndexError: list index out of range更新2自制版本:
python setup.py安装-用户消息
os=darwin当前版本: tesseract ~cv_pc~ {“extra_link_args”:“不”、“也许”、“变量”、“在”、“包含”、“不”、“不”、“应该”、“环境”、“opencv”、“添加”、“您”、“`opencv.pc”、“包”、“PKG_CONFIG_PATH”、“搜索”、“包”、“was”、“opencv”、“目录”、“找到的”,‘'the','path.','pkg-config'} 'extra_link_args’回溯(最近一次调用):文件"setup.py",第160行,在extra_link_args中
IndexError:列出超出范围的索引
更新3:从步骤1到3,所有的工作都很好。但是在第4步,我被困在python setup.py干净了。
它打印此消息:
os=darwin
Current Version : tesseract
~~~cv_pc~~~
{'extra_link_args': ['/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_features2d.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_objdetect.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_video.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_imgproc.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_ocl.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_contrib.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_superres.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_nonfree.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_flann.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_legacy.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_core.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_gpu.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_ts.a', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_videostab.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_highgui.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_ml.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_stitching.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_calib3d.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_photo.dylib'], 'include_dirs': ['/usr/local/Cellar/opencv/2.4.7.1/include/opencv', '/usr/local/Cellar/opencv/2.4.7.1/include']}
['extra_link_args', 'include_dirs']
add lib: opencv_features2d
add lib: opencv_objdetect
add lib: opencv_video
add lib: opencv_imgproc
add lib: opencv_ocl
add lib: opencv_contrib
add lib: opencv_superres
add lib: opencv_nonfree
add lib: opencv_flann
add lib: opencv_legacy
add lib: opencv_core
add lib: opencv_gpu
add lib: opencv_ts
add lib: opencv_videostab
add lib: opencv_highgui
add lib: opencv_ml
add lib: opencv_stitching
add lib: opencv_calib3d
add lib: opencv_photo
===========['stdc++', 'tesseract', 'lept', 'opencv_features2d', 'opencv_objdetect', 'opencv_video', 'opencv_imgproc', 'opencv_ocl', 'opencv_contrib', 'opencv_superres', 'opencv_nonfree', 'opencv_flann', 'opencv_legacy', 'opencv_core', 'opencv_gpu', 'opencv_ts', 'opencv_videostab', 'opencv_highgui', 'opencv_ml', 'opencv_stitching', 'opencv_calib3d', 'opencv_photo']===========
['.', '/usr/local/include/opencv2', '/usr/local/include/opencv']
Traceback (most recent call last):
File "setup.py", line 251, in <module>
swig_opts=["-c++", "-I"+inclpath('tesseract'),
TypeError: cannot concatenate 'str' and 'NoneType' objects发布于 2014-01-10 22:38:40
无法成功导入它的原因是您从未成功地安装过它。
setup.py的输出显示了这一点:异常情况下它失败了。
那么,为什么您能够import tesseract并取得足够多的tesseract.py代码失败,而不是甚至无法找到它?我的猜测是,您在tesseract源代码树中间用当前的工作目录启动了Python,因此找到了tesseract.py的源代码副本,尽管没有安装任何东西。但是,当然也有可能是安装不完整,安装失败,特别是在尝试通过setup.py安装之前,您尝试为错误版本的OS解锁二进制副本。
不管怎么说,你想知道的是如何修复它,而不是为什么它不能工作,对吗?
嗯,就在你链接的指令的顶端,上面写着:
已经过时了!!使用自制版本,请为homebrew编译
您所遵循的说明并没有为小牛更新,并且链接到一个只针对10.8的二进制包(可能也适用于较旧的MacPorts代码),这是一个很好的迹象,表明当他们说“过时”、两个感叹号和所有东西时,他们都是认真的。
在遵循Homebrew指令之前,除非您对MacPorts有其他需求,否则我建议完全卸载MacPorts。通常只需使用sudo rm -rf /opt/local即可完成此操作,然后编辑~/.bash_profile以删除对/opt/local的所有引用,但您可能希望首先检查MacPorts站点上的最新说明。如果您害怕这样做,那么您可以始终只使用sudo mv /opt/local /opt/local-bak,这样就会把它留在那里,但不要碍事。
另外,不要使用您现有的签出源代码。它有一个破碎的,不完整的构建,谁知道这将如何影响任何试图再次构建它。只需完全删除该目录,当您到达指令的svn checkout步骤时,您将得到一个全新的、干净的副本。
然后,从如何为家用啤酒编译python-tesseract ( Mountain /Maverick)页面的顶部开始。
当你进入第4步时,不要同时做这两步,只做其中一步。我建议第一个版本,从源代码构建,因为它可能会更明显,更容易恢复,如果有任何问题。但是,如果您执行第二个版本,安装二进制文件,请确保这次获得10.9版本,而不是10.8版本。
发布于 2014-03-18 15:26:45
我遇到了这个问题。唯一的问题是我必须竞选:
sudo ldconfig从命令行运行tesseract -v可以确认这是否是一个问题。
https://stackoverflow.com/questions/21054818
复制相似问题