CosyVoice环境安装报错:安装openai-whisper时出现ModuleNotFoundError: No module named ‘pkg_resources‘的原因

先说如何解决,我个人采用源码安装,安装时禁用构建隔离:
git clone https://github.com/openai/whisper.git
cd whisper
git checkout v20231117
pip install -e . --no-build-isolation

再说该问题产生的原因,下面是大D老师的回答,自行参考。

太棒了!你找到了正确的解决方案。让我详细解释为什么会出现这个问题,以及为什么 --no-build-isolation 能解决它。

🔍 问题根源分析

问题的关键在于 PEP 517/518 构建隔离机制和你的 setup.py 实现方式。

1. 构建隔离机制 (Build Isolation) 的工作原理

当你执行 pip install -e .(不带 --no-build-isolation)时,pip 会:

1. 创建一个临时的、干净的虚拟环境(在 /tmp/pip-build-env-xxx/) 2. 在这个隔离环境中只安装 pyproject.toml 中 [build-system] 要求的包 3. 在隔离环境中执行构建(运行 setup.py) 4. 将构建产物安装到你的目标环境 

2. 为什么你的构建会失败

看你的 setup.py 第5行:

import pkg_resources # 这行在构建的早期阶段就需要

问题出在第30行附近:

install_requires=requirements +[str(r)for r in pkg_resources.parse_requirements(open(os.path.join(os.path.dirname(__file__),"requirements.txt")))],

关键问题pkg_resources.parse_requirements()模块导入级别就被执行了!

这意味着:

  • Python 在解析 setup.py 时,立即执行了 import pkg_resources
  • 但在隔离的构建环境中,默认没有安装 setuptools
  • 因此 pkg_resources 不存在,导致 ModuleNotFoundError

3. 构建环境 vs 目标环境的区别

┌─────────────────────┐ ┌─────────────────────┐ │ 目标虚拟环境 │ │ 隔离构建环境 │ │ (cosyvoice) │ │ (临时) │ ├─────────────────────┤ ├─────────────────────┤ │ ✓ setuptools 81.0.0 │ │ ✗ setuptools 未安装 │ │ ✓ pkg_resources │ │ ✗ pkg_resources │ │ ✓ 所有项目依赖 │ │ 只有构建基础包 │ └─────────────────────┘ └─────────────────────┘ ↑ ↑ └────── pip install -e . ──────┘ 需要同时满足两者 

💡 为什么 --no-build-isolation 能解决

pip install-e. --no-build-isolation 

这个命令告诉 pip:“不要创建隔离的构建环境,直接在当前激活的虚拟环境中构建

于是流程变成:

┌─────────────────────┐ │ 目标虚拟环境 │ │ (cosyvoice) │ ├─────────────────────┤ │ ✓ setuptools 81.0.0 │ ←── 直接在同一个环境中执行构建 │ ✓ pkg_resources │ 和安装 │ ✓ 所有项目依赖 │ └─────────────────────┘ ↓ pip install -e . (无隔离环境) 

因为你的虚拟环境中已经有 setuptools,所以 import pkg_resources 可以成功执行。

📝 更好的修复方式

虽然 --no-build-isolation 解决了问题,但更好的做法是修改 setup.py,使其在隔离环境中也能工作:

import os import platform import sys from setuptools import find_packages, setup # 延迟导入 pkg_resources,或使用 try/exceptdefget_install_requires():"""延迟解析 requirements.txt,避免构建时依赖""" requirements =[]if sys.platform.startswith("linux")and platform.machine()=="x86_64": requirements.append("triton>=2.0.0,<3")# 只在需要时导入 pkg_resourcestry:import pkg_resources req_file = os.path.join(os.path.dirname(__file__),"requirements.txt")withopen(req_file, encoding="utf-8")as f: requirements.extend([str(r)for r in pkg_resources.parse_requirements(f)])except ImportError:# 降级方案:简单读取 requirements.txt req_file = os.path.join(os.path.dirname(__file__),"requirements.txt")withopen(req_file, encoding="utf-8")as f: requirements.extend([ line.strip()for line in f if line.strip()andnot line.startswith("#")])return requirements defread_version(fname="whisper/version.py"):exec(compile(open(fname, encoding="utf-8").read(), fname,"exec"))returnlocals()["__version__"] setup( name="openai-whisper", py_modules=["whisper"], version=read_version(), description="Robust Speech Recognition via Large-Scale Weak Supervision", long_description=open("README.md", encoding="utf-8").read(), long_description_content_type="text/markdown", readme="README.md", python_requires=">=3.8", author="OpenAI", url="https://github.com/openai/whisper", license="MIT", packages=find_packages(exclude=["tests*"]), install_requires=get_install_requires(),# 使用函数延迟解析 entry_points={"console_scripts":["whisper=whisper.transcribe:cli"],}, include_package_data=True, extras_require={"dev":["pytest","scipy","black","flake8","isort"]},)

🎯 总结

问题原因解决方案
ModuleNotFoundError: No module named 'pkg_resources'构建隔离环境中没有 setuptools,但 setup.py 在模块级别导入 pkg_resources1. ✅ --no-build-isolation 跳过隔离环境
2. 修改 setup.py 延迟导入 pkg_resources

你使用的 --no-build-isolation 是完全正确的临时解决方案。对于长期使用,可以考虑向项目提交 PR 修改 setup.py,使其构建时不需要预先存在的 setuptools。

Read more

GLM-4.7-Flash实战教程:基于GLM-4.7-Flash构建本地Copilot工具

GLM-4.7-Flash实战教程:基于GLM-4.7-Flash构建本地Copilot工具 1. 为什么需要本地Copilot工具 在日常编程和工作中,我们经常需要代码建议、文档生成、问题解答等AI辅助功能。虽然云端AI服务很方便,但存在网络延迟、隐私安全、使用成本等问题。基于GLM-4.7-Flash构建本地Copilot工具,可以让你: * 完全离线运行:不依赖网络,响应速度极快 * 数据隐私安全:所有对话和代码都在本地处理 * 定制化能力强:可以根据自己的需求调整模型行为 * 成本可控:一次部署,长期使用,无按次付费 GLM-4.7-Flash作为最新的开源大模型,在代码理解和生成方面表现出色,特别适合作为本地编程助手。 2. 环境准备与快速部署 2.1 硬件要求 为了流畅运行GLM-4.7-Flash,建议准备以下硬件环境: * GPU:4张RTX 4090 D显卡(或同等算力) * 内存:至少128GB系统内存 * 存储:至少100GB可用空间(模型文件约59GB)

人工智能:什么是AIGC?什么是AI4S?人工智能四大核心领域全景解析

人工智能:什么是AIGC?什么是AI4S?人工智能四大核心领域全景解析

文章目录 * 引言:AI 领域 “四分天下” * 一、AIGC:生成式 AI,内容创作的 “全能造物主” * 二、AI for Science(AI4S):科学智能,加速人类认知边界 * 三、CV(计算机视觉):计算机的 “眼睛”,感知世界的核心 * 四、自然语言处理(NLP):人机沟通的 “翻译官”,语言理解的巅峰 * 不同领域的协同与区别 * 结合四大领域的案例——HealthGPT 引言:AI 领域 “四分天下” 斯坦福大学 2025 年《人工智能指数报告》指出,AI 已从实验室突破全面进入社会深度应用期,形成四大核心领域支撑的技术生态。这四大领域并非孤立存在,而是相互协同、共同推动 AI 从

终极语音识别神器:Whisper.cpp完整使用指南

终极语音识别神器:Whisper.cpp完整使用指南 【免费下载链接】whisper.cppOpenAI 的 Whisper 模型在 C/C++ 中的移植版本。 项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp Whisper.cpp是OpenAI Whisper自动语音识别模型的C/C++移植版本,提供了高性能的离线语音识别解决方案。这个项目最大的亮点在于完全用纯C/C++实现,无需任何外部依赖,就能在各种平台上实现高效的语音转文字功能。 为什么选择Whisper.cpp 在众多语音识别工具中,Whisper.cpp凭借其独特的优势脱颖而出: 跨平台兼容性 - 从macOS、iOS到Android、Linux,甚至WebAssembly和Windows系统都能完美运行,连Raspberry Pi和Docker容器都支持。 极致性能优化 - 针对苹果Silicon芯片深度优化,支持ARM NEON、

Copilot助力AI原生应用:提升开发效率的5种方法

Copilot助力AI原生应用:提升开发效率的5种方法 关键词:GitHub Copilot、AI原生应用、开发效率、代码生成、智能补全、上下文感知、开发协作 摘要:在AI原生应用(AI-Native Apps)的开发浪潮中,开发者面临着代码复杂度高、迭代速度快、跨模态能力需求强等挑战。作为GitHub与OpenAI联合推出的AI代码助手,GitHub Copilot通过“代码即自然语言”的交互方式,正在重塑开发者的工作流。本文将结合真实开发场景,拆解Copilot提升效率的5种核心方法,并通过实战案例演示如何在AI原生应用中最大化发挥其价值。 背景介绍 目的和范围 本文旨在帮助开发者(尤其是AI原生应用开发者)掌握GitHub Copilot的核心能力,通过具体方法和实战案例,解决“如何用AI工具提升开发效率”的实际问题。内容覆盖从基础功能到高阶技巧,适用于前端、后端、全栈开发场景。 预期读者 * 正在开发AI原生应用(如智能客服、推荐系统、AIGC工具)的开发者 * 希望优化现有开发流程的技术团队 * 对AI辅助开发工具感兴趣的技术管理者