("\n".join(messages)) RuntimeError: failed to build image setuptools because: Tr...

2025年12月14日 21:12 状态: processing

🚨 错误信息

Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "c:\users\lx\.local\bin\nb.exe\__main__.py", line 6, in <module> sys.exit(main()) ~~~~^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\nb_cli\__main__.py", line 10, in main anyio.run(cli_main, *args) ~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\anyio\_core\_eventloop.py", line 75, in run return async_backend.run(func, args, {}, backend_options) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\anyio\_backends\_asyncio.py", line 2365, in run return runner.run(wrapper()) ~~~~~~~~~~^^^^^^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.2544.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py", line 118, in run return self._loop.run_until_complete(task) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.2544.0_x64__qbz5n2kfra8p0\Lib\asyncio\base_events.py", line 725, in run_until_complete return future.result() ~~~~~~~~~~~~~^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\anyio\_backends\_asyncio.py", line 2348, in wrapper return await func(*args) ^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\nb_cli\__init__.py", line 35, in cli_main return await run_sync(cli_sync)(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\nb_cli\cli\utils.py", line 106, in wrapper return await anyio.to_thread.run_sync(partial(func, *args, **kwargs)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\anyio\to_thread.py", line 61, in run_sync return await get_async_backend().run_sync_in_worker_thread( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\anyio\_backends\_asyncio.py", line 2525, in run_sync_in_worker_thread return await future ^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\anyio\_backends\_asyncio.py", line 986, in run result = context.run(func, *args) File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\click\core.py", line 1485, in __call__ return self.main(*args, **kwargs) ~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\click\core.py", line 1406, in main rv = self.invoke(ctx) File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\click\core.py", line 1873, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\click\core.py", line 1269, in invoke return ctx.invoke(self.callback, **ctx.params) ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\click\core.py", line 824, in invoke return callback(*args, **kwargs) File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\click\decorators.py", line 34, in new_func return f(get_current_context(), *args, **kwargs) File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\nb_cli\cli\utils.py", line 114, in wrapper return anyio.from_thread.run(partial(func, *args, **kwargs)) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\anyio\from_thread.py", line 90, in run return token.backend_class.run_async_from_thread( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ func, args, token=token.native_token if explicit_token else None ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\anyio\_backends\_asyncio.py", line 2572, in run_async_from_thread return f.result() ~~~~~~~~^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.2544.0_x64__qbz5n2kfra8p0\Lib\concurrent\futures\_base.py", line 456, in result return self.__get_result() ~~~~~~~~~~~~~~~~~^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.2544.0_x64__qbz5n2kfra8p0\Lib\concurrent\futures\_base.py", line 401, in __get_result raise self._exception File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\anyio\_backends\_asyncio.py", line 2553, in task_wrapper return await func(*args) ^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\nb_cli\cli\commands\project.py", line 318, in create await create_virtualenv( venv_dir, prompt=project_dir_name, python_path=python_interpreter ) File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\nb_cli\handlers\meta.py", line 152, in wrapper return await func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\nb_cli\handlers\venv.py", line 32, in create_virtualenv return virtualenv.cli_run(args) ~~~~~~~~~~~~~~~~~~^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\virtualenv\run\__init__.py", line 33, in cli_run of_session.run() ~~~~~~~~~~~~~~^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\virtualenv\run\session.py", line 47, in run self._seed() ~~~~~~~~~~^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\virtualenv\run\session.py", line 60, in _seed self.seeder.run(self.creator) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\virtualenv\seed\embed\via_app_data\via_app_data.py", line 73, in run raise RuntimeError("\n".join(messages)) RuntimeError: failed to build image setuptools because: Traceback (most recent call last): File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\virtualenv\seed\embed\via_app_data\via_app_data.py", line 59, in _install installer.install(creator.interpreter.version_info) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\virtualenv\seed\embed\via_app_data\pip_install\base.py", line 39, in install self._sync(filename, into) ~~~~~~~~~~^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\virtualenv\seed\embed\via_app_data\pip_install\copy.py", line 13, in _sync copy(src, dst) ~~~~^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\virtualenv\util\path\_sync.py", line 43, in copy method(str(src), str(dest)) ~~~~~~^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lx\pipx\venvs\nb-cli\Lib\site-packages\virtualenv\util\path\_sync.py", line 54, in copytree shutil.copy(src_f, dest_f) ~~~~~~~~~~~^^^^^^^^^^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.2544.0_x64__qbz5n2kfra8p0\Lib\shutil.py", line 428, in copy copyfile(src, dst, follow_symlinks=follow_symlinks) ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.13_3.13.2544.0_x64__qbz5n2kfra8p0\Lib\shutil.py", line 260, in copyfile with open(src, 'rb') as fsrc: ~~~~^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\lx\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\\LocalCache\\Local\\pypa\\virtualenv\\wheel\\3.9\\image\\1\\CopyPipInstall\\setuptools-80.9.0-py3-none-any\\pkg_resources\\tests\\data\\my-test-package_zipped-egg\\my_test_package-1.0-py3.7.egg'

🤖 AI解决方案

代码报错分析

1. 错误翻译

原文:FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\lx\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\\LocalCache\\Local\\pypa\\virtualenv\\wheel\\3.9\\image\\1\\CopyPipInstall\\setuptools-80.9.0-py3-none-any\\pkg_resources\\tests\\data\\my-test-package_zipped-egg\\my_test_package-1.0-py3.7.egg'
译文:文件未找到错误:[错误号2] 没有这样的文件或目录:[路径]

2. 原因分析

根本原因:在创建虚拟环境时,virtualenv 尝试复制一个 setuptools 包中的测试数据文件,但该文件不存在于本地缓存中。

具体分析

  • 位置:发生在 nb-cli 创建项目的过程中,具体是在 virtualenv 安装 setuptools 包时

  • 上下文

  • - 使用 Python 3.13(Windows Store 版本)
    - 通过 pipx 安装的 nb-cli 工具
    - 在创建虚拟环境时,需要安装 setuptools 包
    - virtualenv 使用预编译的 wheel 包,其中包含一个路径不存在的测试文件

    3. 解决方案

    方法1:清除 virtualenv 缓存并重试

    # 清除 virtualenv 的缓存
    pipx run virtualenv --clear
    # 或者直接删除缓存目录
    rm -rf C:\Users\lx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\Local\pypa\virtualenv
    
    # 然后重新运行 nb-cli 创建项目
    nb create

    方法2:手动安装 setuptools 并重新创建虚拟环境

    # 首先更新 pip 和 setuptools
    pip install --upgrade pip setuptools
    
    # 然后重新运行 nb-cli
    nb create

    方法3:使用系统 Python 而非 Windows Store Python(推荐)

    # 1. 卸载 Windows Store Python 版本
    # 2. 从 python.org 下载并安装官方 Python 3.12(当前更稳定)
    # 3. 重新安装 nb-cli
    pip install nb-cli
    
    # 4. 重新创建项目
    nb create

    4. ️ 预防措施

    最佳实践建议:

  • 避免使用 Windows Store Python:Windows Store 版本的 Python 可能存在权限和路径问题,建议从 python.org 下载官方安装包
  • 定期清理包缓存:定期运行 pip cache purge 或删除 pip/virtualenv 缓存目录,避免损坏的缓存文件
  • 开发工具建议:

  • 使用 pyenvconda 管理多个 Python 版本
  • 使用 pip list --outdated 定期检查并更新过时的包
  • 在创建虚拟环境时添加 --no-cache-dir 参数:python -m venv --no-cache-dir venv_name

注意:此问题是 Windows Store Python 版本与 virtualenv 的兼容性问题,切换到官方 Python 版本是最稳定的解决方案。