• 离线安装Levenshtein cannot import name ‘_levenshtein‘


    今天在python35的离线环境安装编辑距离的依赖包python-Levenshtein。遇到了很多问题,这里记一下。

    先说一下,其实还有另一个distance的包里面也有编辑距离,但是这个包我用的时候,处理完所有数据用的时间是python-Levenshtein的100倍,所以还是用这个包要快一些。建议用这个包。

    先说下我用的版本的python-Levenshtein · PyPI

    安装python-Levenshtein 0.12.0 版本,我本地win10用的也是这个版本。

    错误经历:

    1.No module named 'rapidfuzz'

    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,所以没法安装。当然,如果不是离线环境,版本也没这么低的话,那装这个应该也是没问题的。

    2.cannot import name '_levenshtein'

    第二个的话是不要依赖的,装的是0.12.0,不过应该0.12.1和0.12.2也是可以用的。

    但是安装之后,因为是直接在安装目录的位置import来尝试了,由于当前位置有个重名的文件,导致直接去访问的是这个文件,而不是启动的位置,所以报错:

    1. (py35)[apps@node-206 python-Levenshtein-0.12.2]$ python3.5
    2. Python 3.5.4 |Continuum Analytics, Inc.| (default, Aug 14 2017, 13:26:58)
    3. [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
    4. Type "help", "copyright", "credits" or "license" for more information.
    5. >>> import Levenshtein
    6. Traceback (most recent call last):
    7.  File "", line 1, in
    8.  File "/home/apps/yf/python-Levenshtein-0.12.2/Levenshtein/__init__.py", line 1, in
    9.    from Levenshtein import _levenshtein
    10. ImportError: cannot import name '_levenshtein'

    这里只要cd ..上去别的层,不要在这个目录里import就可以了。

    3.删除之前安装的错误版本

    然后由于之前这里安装了其他版本的Levenshtein,所以还是会报错,缺乏依赖。

    1. (py35)[apps@node-206 yf]$ python
    2. Python 3.5.4 |Continuum Analytics, Inc.| (default, Aug 14 2017, 13:26:58)
    3. [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
    4. Type "help", "copyright", "credits" or "license" for more information.
    5. >>> import Levenshtein
    6. Traceback (most recent call last):
    7.  File "", line 1, in
    8.  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
    9.    from rapidfuzz import string_metric as _string_metric
    10. ImportError: No module named 'rapidfuzz'

    仔细看这里其实用的是0.16.0的版本,而不是我安装的0.12.0的版本,这个0.16的版本由于缺乏依赖,其实并没有安装成功,但是这里还是出现了,不知道为啥。

    这里就把之前安装的版本卸载之后就成功了。

    1. (py35)[apps@node-206 /]$ pip uninstall Levenshtein
    2. Uninstalling Levenshtein-0.16.0:
    3.  /opt/jt/miniconda/envs/py35/lib/python3.5/site-packages/Levenshtein-0.16.0-py3.5-linux-x86_64.egg
    4. Proceed (y/n)? y
    5.  Successfully uninstalled Levenshtein-0.16.0
    6. (py35)[apps@node-206 /]$ python
    7. Python 3.5.4 |Continuum Analytics, Inc.| (default, Aug 14 2017, 13:26:58)
    8. [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
    9. Type "help", "copyright", "credits" or "license" for more information.
    10. >>> import Levenshtein
    11. >>>

  • 相关阅读:
    【跟小嘉学 Rust 编程】二十一、网络编程
    详解--Hash(中文也称散列、哈希)
    Python调用OpenCV接口播放本地视频文件、本地和网络摄像头
    36-Jenkins-Job迁移
    JSP利用AJAX实现页面即时校验验证码
    任意文件下载(读取)
    代码随想录算法训练营DAY37|C++贪心算法Part.6|738.单调递增的数字、968.监控二叉树、贪心算法总结
    【二】2D测量 Metrology——align_metrology_model()算子
    Java 内存模型
    Unity 2D入门项目:Ruby‘s Adventure(三)Unity调色板工具栏的介绍
  • 原文地址:https://blog.csdn.net/qq_38163931/article/details/126106690