You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 23.10执行pipenv update时提示setuptools未找到的问题

问题描述

在Ubuntu 23.10系统、Python 3.11.6环境下,执行命令pipenv update --python=/usr/bin/python时出现依赖锁定失败,核心报错为:

The 'setuptools' distribution was not found and is required by the application

完整报错回溯如下:

$ pipenv update --python=/usr/bin/python
Loading .env environment variables...
Running $ pipenv lock then $ pipenv sync.
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
Resolving dependencies...
✘ Locking Failed!
⠸ Locking...
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pipenv/resolver.py", line 738, in <module>
    main()
  File "/usr/lib/python3/dist-packages/pipenv/resolver.py", line 724, in main
    _main(
  File "/usr/lib/python3/dist-packages/pipenv/resolver.py", line 704, in _main
    resolve_packages(
  File "/usr/lib/python3/dist-packages/pipenv/resolver.py", line 662, in resolve_packages
    results, resolver = resolve(
                        ^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/resolver.py", line 642, in resolve
    return resolve_deps(
           ^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/utils/resolver.py", line 1167, in resolve_deps
    results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
                                                         ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/utils/resolver.py", line 937, in actually_resolve_deps
    resolver = Resolver.create(
               ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/utils/resolver.py", line 479, in create
    constraints, skipped, index_lookup, markers_lookup = resolver.get_metadata(
                                                         ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/utils/resolver.py", line 230, in get_metadata
    req, req_idx, markers_idx = self.parse_line(
                                ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/utils/resolver.py", line 285, in parse_line
    req = Requirement.from_line(line)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requirementslib/models/requirements.py", line 2467, in from_line
    parsed_line.set_setup_info(parsed_line.get_setup_info())
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requirementslib/models/requirements.py", line 791, in get_setup_info
    setup_info = SetupInfo.from_ireq(self.ireq, subdir=self.subdirectory)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 1705, in from_ireq
    created = cls.create(
              ^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 1740, in create
    created.get_initial_info()
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 1577, in get_initial_info
    self.run_pyproject()
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 1558, in run_pyproject
    result = get_pyproject(self.pyproject.parent)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requirementslib/models/utils.py", line 465, in get_pyproject
    backend = get_default_pyproject_backend()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requirementslib/models/utils.py", line 436, in get_default_pyproject_backend
    st_version = get_setuptools_version()
                 ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/requirementslib/models/utils.py", line 430, in get_setuptools_version
    setuptools_dist = get_distribution(Requirement("setuptools"))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/patched/pip/_vendor/pkg_resources/__init__.py", line 528, in get_distribution
    dist = get_provider(dist)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/patched/pip/_vendor/pkg_resources/__init__.py", line 400, in get_provider
    return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/patched/pip/_vendor/pkg_resources/__init__.py", line 968, in require
    needed = self.resolve(parse_requirements(requirements))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/patched/pip/_vendor/pkg_resources/__init__.py", line 829, in resolve
    dist = self._resolve_dist(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/patched/pip/_vendor/pkg_resources/__init__.py", line 870, in _resolve_dist
    raise DistributionNotFound(req, requirers)
pipenv.patched.pip._vendor.pkg_resources.DistributionNotFound: The 'setuptools' distribution was not found and is required by the application

Traceback (most recent call last):
  File "/home/khteh/.local/bin/pipenv", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/cli/options.py", line 58, in main
    return super().main(*args, **kwargs, windows_expand_args=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/vendor/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/cli/command.py", line 573, in update
    do_update(
  File "/usr/lib/python3/dist-packages/pipenv/routines/update.py", line 68, in do_update
    do_lock(
  File "/usr/lib/python3/dist-packages/pipenv/routines/lock.py", line 65, in do_lock
    venv_resolve_deps(
  File "/usr/lib/python3/dist-packages/pipenv/utils/resolver.py", line 1110, in venv_resolve_deps
    c = resolve(cmd, st, project=project)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pipenv/utils/resolver.py", line 985, in resolve
    raise RuntimeError("Failed to lock Pipfile.lock!")
RuntimeError: Failed to lock Pipfile.lock!
解决方案

1. 安装系统级Python的setuptools

Ubuntu系统默认可能未给系统Python安装setuptools,执行以下命令安装:

sudo apt update && sudo apt install python3-setuptools

2. 在pipenv目标环境中手动安装setuptools

如果系统级安装无效,直接在pipenv要使用的Python环境中安装:

# 创建并进入pipenv虚拟环境
pipenv shell --python=/usr/bin/python
# 在环境内安装setuptools
pip install setuptools
# 退出虚拟环境
exit
# 重新执行update命令
pipenv update --python=/usr/bin/python

3. 升级目标Python的pip和setuptools

先确保目标Python的pip和setuptools是最新版本:

/usr/bin/python -m pip install --upgrade pip setuptools

完成后再运行pipenv update --python=/usr/bin/python

4. 重置pipenv环境(极端情况)

如果以上方法都无效,删除现有锁定文件和虚拟环境后重新初始化:

# 删除Pipfile.lock
rm -f Pipfile.lock
# 删除现有虚拟环境
pipenv --rm
# 重新创建环境并安装依赖
pipenv install --python=/usr/bin/python
# 执行update
pipenv update

内容的提问来源于stack exchange,提问作者khteh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 22:48:10