• 离线安装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. >>>

  • 相关阅读:
    OpenShift 4 - 安装 ODF 并部署红帽 Quay (3 Worker)
    仅需4步,让投资人对你“一见钟情”
    全真模拟题!PMP提分必练
    GBASE 8A v953报错集锦48--远程 rmt 导出 dual 表数据没有落到本地而是落到了集群节点上
    HarmonyOS开发:NodeJs脚本实现组件化动态切换
    node.js -- 身份认证
    内网工具viper的介绍与配置简介
    代码界的奥斯卡:SpringBoot测试的艺术与科学
    Elasticsearch入门(一)基本介绍与安装
    深入理解计算机系统——第八章 Exceptional Control Flow
  • 原文地址:https://blog.csdn.net/qq_38163931/article/details/126106690