今天在python35的离线环境安装编辑距离的依赖包python-Levenshtein。遇到了很多问题,这里记一下。
先说一下,其实还有另一个distance的包里面也有编辑距离,但是这个包我用的时候,处理完所有数据用的时间是python-Levenshtein的100倍,所以还是用这个包要快一些。建议用这个包。
先说下我用的版本的python-Levenshtein · PyPI
安装python-Levenshtein 0.12.0 版本,我本地win10用的也是这个版本。
Levenshtein有两种,一种是Levenshtein,另一种是python-Levenshtein,在pypi能查到,感觉这个不带python的是比较新的版本,带python的是更新到0.12.2就不再更新了的版本。两个import的时候都是import Levenshtein。
第一个是需要依赖rapidfuzz的,这个没有对应架构的版本,我安装的服务器是需要manylinux1_x86_64.whl 这种的,但是这个依赖rapidfuzz只有manylinux2010_x86_64.whl这种架构的。如果是tar包安装的话又要求很高版本的gcc,所以没法安装。当然,如果不是离线环境,版本也没这么低的话,那装这个应该也是没问题的。
第二个的话是不要依赖的,装的是0.12.0,不过应该0.12.1和0.12.2也是可以用的。
但是安装之后,因为是直接在安装目录的位置import来尝试了,由于当前位置有个重名的文件,导致直接去访问的是这个文件,而不是启动的位置,所以报错:
- (py35)[apps@node-206 python-Levenshtein-0.12.2]$ python3.5
- Python 3.5.4 |Continuum Analytics, Inc.| (default, Aug 14 2017, 13:26:58)
- [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import Levenshtein
- Traceback (most recent call last):
- File "
" , line 1, in - File "/home/apps/yf/python-Levenshtein-0.12.2/Levenshtein/__init__.py", line 1, in
- from Levenshtein import _levenshtein
- ImportError: cannot import name '_levenshtein'
这里只要cd ..上去别的层,不要在这个目录里import就可以了。
然后由于之前这里安装了其他版本的Levenshtein,所以还是会报错,缺乏依赖。
- (py35)[apps@node-206 yf]$ python
- Python 3.5.4 |Continuum Analytics, Inc.| (default, Aug 14 2017, 13:26:58)
- [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import Levenshtein
- Traceback (most recent call last):
- File "
" , line 1, in - File "/opt/jt/miniconda/envs/py35/lib/python3.5/site-packages/Levenshtein-0.16.0-py3.5-linux-x86_64.egg/Levenshtein/__init__.py", line 21, in
- from rapidfuzz import string_metric as _string_metric
- ImportError: No module named 'rapidfuzz'
-
仔细看这里其实用的是0.16.0的版本,而不是我安装的0.12.0的版本,这个0.16的版本由于缺乏依赖,其实并没有安装成功,但是这里还是出现了,不知道为啥。
这里就把之前安装的版本卸载之后就成功了。
- (py35)[apps@node-206 /]$ pip uninstall Levenshtein
- Uninstalling Levenshtein-0.16.0:
- /opt/jt/miniconda/envs/py35/lib/python3.5/site-packages/Levenshtein-0.16.0-py3.5-linux-x86_64.egg
- Proceed (y/n)? y
- Successfully uninstalled Levenshtein-0.16.0
- (py35)[apps@node-206 /]$ python
- Python 3.5.4 |Continuum Analytics, Inc.| (default, Aug 14 2017, 13:26:58)
- [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import Levenshtein
- >>>
-