• conda环境下nltk_data下载失败问题解决


    1 问题描述

    VITS2的模型训练过程中,出现nltk_data下载失败错误,打印信息如下:

    1. python preprocess_text.py
    2. [nltk_data] Error loading averaged_perceptron_tagger: <urlopen error
    3. [nltk_data] [Errno 111] Connection refused>
    4. [nltk_data] Error loading cmudict: <urlopen error [Errno 111]
    5. [nltk_data] Connection refused>
    6. Traceback (most recent call last):
    7. File "/root/anaconda3/envs/vits/lib/python3.9/site-packages/nltk/corpus/util.py", line 84, in __load
    8. root = nltk.data.find(f"{self.subdir}/{zip_name}")
    9. File "/root/anaconda3/envs/vits/lib/python3.9/site-packages/nltk/data.py", line 583, in find
    10. raise LookupError(resource_not_found)
    11. LookupError:
    12. **********************************************************************
    13. Resource cmudict not found.
    14. Please use the NLTK Downloader to obtain the resource:
    15. >>> import nltk
    16. >>> nltk.download('cmudict')
    17. For more information see: https://www.nltk.org/data.html
    18. Attempted to load corpora/cmudict.zip/cmudict/
    19. Searched in:
    20. - '/root/nltk_data'
    21. - '/root/anaconda3/envs/vits/nltk_data'
    22. - '/root/anaconda3/envs/vits/share/nltk_data'
    23. - '/root/anaconda3/envs/vits/lib/nltk_data'
    24. - '/usr/share/nltk_data'
    25. - '/usr/local/share/nltk_data'
    26. - '/usr/lib/nltk_data'
    27. - '/usr/local/lib/nltk_data'
    28. **********************************************************************
    29. During handling of the above exception, another exception occurred:
    30. Traceback (most recent call last):
    31. File "/opt/Bert-VITS2/preprocess_text.py", line 9, in <module>
    32. from text.cleaner import clean_text
    33. File "/opt/Bert-VITS2/text/cleaner.py", line 1, in <module>
    34. from text import chinese, japanese, english, cleaned_text_to_sequence
    35. File "/opt/Bert-VITS2/text/english.py", line 11, in <module>
    36. _g2p = G2p()
    37. File "/root/anaconda3/envs/vits/lib/python3.9/site-packages/g2p_en/g2p.py", line 71, in __init__
    38. self.cmu = cmudict.dict()
    39. File "/root/anaconda3/envs/vits/lib/python3.9/site-packages/nltk/corpus/util.py", line 121, in __getattr__
    40. self.__load()
    41. File "/root/anaconda3/envs/vits/lib/python3.9/site-packages/nltk/corpus/util.py", line 86, in __load
    42. raise e
    43. File "/root/anaconda3/envs/vits/lib/python3.9/site-packages/nltk/corpus/util.py", line 81, in __load
    44. root = nltk.data.find(f"{self.subdir}/{self.__name}")
    45. File "/root/anaconda3/envs/vits/lib/python3.9/site-packages/nltk/data.py", line 583, in find
    46. raise LookupError(resource_not_found)
    47. LookupError:
    48. **********************************************************************
    49. Resource cmudict not found.
    50. Please use the NLTK Downloader to obtain the resource:
    51. >>> import nltk
    52. >>> nltk.download('cmudict')
    53. For more information see: https://www.nltk.org/data.html
    54. Attempted to load corpora/cmudict
    55. Searched in:
    56. - '/root/nltk_data'
    57. - '/root/anaconda3/envs/vits/nltk_data'
    58. - '/root/anaconda3/envs/vits/share/nltk_data'
    59. - '/root/anaconda3/envs/vits/lib/nltk_data'
    60. - '/usr/share/nltk_data'
    61. - '/usr/local/share/nltk_data'
    62. - '/usr/lib/nltk_data'
    63. - '/usr/local/lib/nltk_data'
    64. **********************************************************************

    2 问题分析

    从异常日志可知,在搜索路径列表中找不到数据。

    3 问题解决

    打开github地址:https://github.com/nltk/nltk_data

    下载整个工程,下载完成后,将packages目录重命令为nltk_data,然后整个nltk_data文件夹拷贝到/usr/share目录下,拷贝完成后,如下所示:

    1. (vits) [root@localhost Bert-VITS2]# ll /usr/share/nltk_data/
    2. 总用量 12
    3. drwxr-xr-x 2 root root 76 118 15:29 chunkers
    4. drwxr-xr-x 2 root root 8192 118 15:30 corpora
    5. drwxr-xr-x 2 root root 316 118 15:30 grammars
    6. drwxr-xr-x 2 root root 56 118 15:30 help
    7. drwxr-xr-x 2 root root 114 118 15:30 misc
    8. drwxr-xr-x 2 root root 244 118 15:30 models
    9. drwxr-xr-x 2 root root 68 118 15:30 sentiment
    10. drwxr-xr-x 2 root root 162 118 15:30 stemmers
    11. drwxr-xr-x 2 root root 332 118 15:30 taggers
    12. drwxr-xr-x 2 root root 52 118 15:30 tokenizers

    再次运行模型程序,问题已经解决

     4 conda环境介绍

    Conda是一个开源的包管理器和环境管理系统,用于安装、运行和更新包和其依赖项。它是由Anaconda, Inc.(以前称为Continuum Analytics)创建,用于支持Python程序开发,但它也可以用来管理来自其他语言的包。Conda使得包管理和环境隔离变得简单,对于处理多个项目中的依赖关系和版本控制尤其有用。

    Conda是一个强大的工具,对于管理复杂的Python项目和环境至关重要。它简化了包管理和环境设置,使得Python开发更加容易和高效。通过使用Conda,开发者可以确保他们的项目在不同机器和操作系统上都能以相同的方式运行,大大提高了项目的可移植性和可复现性。

    4.1 Conda的核心功能

    • 包管理:Conda作为包管理器,可以安装、更新和移除Python包。它通过Conda仓库,如Anaconda Cloud或Conda Forge,来获取包。

    • 环境管理:Conda允许用户创建隔离的环境,以便于不同项目可以拥有不同的库和/或Python版本。这在处理不兼容的依赖项或不同项目的需求时非常有用。

    • 跨平台:Conda支持Linux、OS X和Windows,并允许创建跨平台的Python环境。

    • 开源:Conda是开源的,允许用户查看源代码并对其进行改进。

    4.2 使用Conda的优势

    • 解决依赖性问题:Conda可以自动解决包之间的依赖关系,简化了安装过程。

    • 环境隔离:创建独立的环境可以避免包之间的版本冲突,使得项目更稳定。

    • 易于使用:Conda的命令行界面简单直观,易于学习和使用。

    • 广泛的包支持:Conda支持Python的许多流行库和应用程序。

    • 社区支持:作为一个流行的工具,Conda拥有一个活跃的社区,用户可以从中找到支持和资源。

    4.3 Conda环境的创建和管理

    • 创建新环境:使用conda create命令创建一个新环境,可以指定Python版本和所需的包。

    • 激活环境:使用conda activate命令来激活环境。

    • 安装包:在激活的环境中使用conda install命令来安装新的包。

    • 环境列表:使用conda env list来查看所有可用的Conda环境。

    • 移除环境:使用conda env remove命令来移除不再需要的环境。

    4.4 应用场景

    • 数据科学和机器学习:Conda非常适合于数据科学和机器学习项目,这些项目通常需要多个库和框架。
    • 软件开发:软件开发者使用Conda来管理项目依赖,确保一致的开发环境。
    • 教学和学术研究:教师和研究人员使用Conda来创建具有特定库和工具的环境,用于教学和研究。

    4.5 常用命令

    Conda 是一个开源的包管理器和环境管理器,广泛用于管理Python环境和包。以下是一些常用的 Conda 命令:

    • 安装 Conda 包:

      • conda install [package-name]: 安装指定的包。
    • 创建和管理环境:

      • conda create --name [env-name]: 创建一个新的环境。
      • conda activate [env-name]: 激活指定环境。
      • conda deactivate: 退出当前环境。
      • conda env list: 列出所有可用的环境。
    • 管理包:

      • conda list: 在当前环境中列出所有已安装的包。
      • conda update [package-name]: 更新指定的包。
      • conda remove [package-name]: 移除指定的包。
    • 搜索包:

      • conda search [package-name]: 搜索可用的包版本。
    • 环境导出和导入:

      • conda env export > environment.yml: 导出当前环境的配置到一个YAML文件。
      • conda env create -f environment.yml: 使用YAML文件创建一个新环境。
    • 更新 Conda:

      • conda update conda: 更新 Conda 到最新版本。
    • 查看 Conda 信息:

      • conda info: 显示关于 Conda 的信息。
  • 相关阅读:
    Vm虚拟机安装Linux系统教程
    OpenMLDB 开源一周年,感恩遇见
    [附源码]SSM计算机毕业设计餐厅卫生安全系统JAVA
    微信小程序开发15 项目实战 基于云开发开发一个在线商城小程序
    Beyond Compare 4对比工具注册
    C++笔试题详解+扩展
    深入解析OLED透明屏的工作原理与优势,智能家居的未来之选
    每日一库:fsnotify简介
    什么是yandex.metrica 目标?
    C++ string赋值和添加值
  • 原文地址:https://blog.csdn.net/lsb2002/article/details/134290627