Skip to content

Unable to install setuptools from GitHub main #1527

@jaraco

Description

@jaraco

It would be nice if pip were able to install setuptools from GitHub main branch. Instead, if one attempts to pip install, an error about the bootstrap script is emitted:

~ $ pip install git+https://github.com/pypa/setuptools
Collecting git+https://github.com/pypa/setuptools
  Cloning https://github.com/pypa/setuptools to /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pip-req-build-j6hkzir0
  Installing build dependencies ... done
  Missing build requirements in pyproject.toml for git+https://github.com/pypa/setuptools.
  The project does not specify a build backend, and pip cannot fall back to setuptools without 'setuptools>=38.2.5'.
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pip-req-build-j6hkzir0/setup.py", line 193, in <module>
        require_metadata()
      File "/private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pip-req-build-j6hkzir0/setup.py", line 24, in require_metadata
        raise RuntimeError(msg)
    RuntimeError: Cannot build setuptools without metadata. Run `bootstrap.py`.

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pip-req-build-j6hkzir0/

I'm wondering if there's a solution to this limitation. I can imagine a few:

  • setuptools could wait for and rely on PEP 517 support and provide its own "installer" (itself) that does the bootstrapping.
  • pip could special-case the installation of anything that looks like setuptools and run bootstrap.py before installing.
  • setuptools could materialize the metadata (egg-info) to the repo, avoiding the need to bootstrap (but requiring special handling of that metadata which is derived from other files in the repo).
  • setuptools could inject a hack to bootstrap and relaunch (this hack might interfere or interact badly with pip's injection of setuptools).

There are probably others. Only the first option seems (somewhat) clean.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs DiscussionIssues where the implementation still needs to be discussed.bug
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions