Skip to content

Cannot install iocage via pip + Git repo #82

@astralblue

Description

@astralblue

Greetings,

I am trying to make my project depend on iocage. Since iocage is not on PyPI, I tried to use it using the "name @ URI" syntax, i.e.,

[project]
# ...
dependencies = [
    # ...
    "iocage @ git+https://github.com/freebsd/[email protected]",
]

However, pip install -e . fails with:

Obtaining file:///home/ab/remote-work/cage2jail
  Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build editable ... done
  Installing backend dependencies ... error
  error: subprocess-exited-with-error
  
  × pip subprocess to install backend dependencies did not run successfully.
  │ exit code: 1
  ╰─> [85 lines of output]
      Collecting iocage@ git+https://github.com/freebsd/[email protected]
        Cloning https://github.com/freebsd/iocage.git (to revision 1.10) to /tmp/pip-install-cn7k9ak6/iocage_5913cdd155f844c7a58e9a93e0cdd32d
        Running command git clone --filter=blob:none --quiet https://github.com/freebsd/iocage.git /tmp/pip-install-cn7k9ak6/iocage_5913cdd155f844c7a58e9a93e0cdd32d
        Running command git checkout -q cb6d357587e31fd69c58b57b41c1031981d4ae9f
        Resolved https://github.com/freebsd/iocage.git to commit cb6d357587e31fd69c58b57b41c1031981d4ae9f
        Installing build dependencies: started
        Installing build dependencies: finished with status 'done'
        Getting requirements to build wheel: started
        Getting requirements to build wheel: finished with status 'done'
        Preparing metadata (pyproject.toml): started
        Preparing metadata (pyproject.toml): finished with status 'error'
        error: subprocess-exited-with-error
      
        × Preparing metadata (pyproject.toml) did not run successfully.
        │ exit code: 1
        ╰─> [59 lines of output]
            /tmp/pip-install-cn7k9ak6/iocage_5913cdd155f844c7a58e9a93e0cdd32d/fastentrypoints.py:73: SetuptoolsDeprecationWarning: easy_install module is deprecated
            !!
      
                    ********************************************************************************
                    Avoid accessing attributes of setuptools.command.easy_install.
      
                    By 2025-Oct-31, you need to update your project and remove deprecated calls
                    or your builds will no longer be supported.
      
                    See https://github.com/pypa/setuptools/issues/4976 for details.
                    ********************************************************************************
      
            !!
              easy_install.ScriptWriter.get_args = get_args
            /tmp/pip-build-env-9va5p6b9/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'tests_require'
              warnings.warn(msg)
            fastentrypoints
            running dist_info
            creating /tmp/pip-modern-metadata-d3hdmy7t/iocage_lib.egg-info
            writing /tmp/pip-modern-metadata-d3hdmy7t/iocage_lib.egg-info/PKG-INFO
            writing dependency_links to /tmp/pip-modern-metadata-d3hdmy7t/iocage_lib.egg-info/dependency_links.txt
            writing entry points to /tmp/pip-modern-metadata-d3hdmy7t/iocage_lib.egg-info/entry_points.txt
            writing requirements to /tmp/pip-modern-metadata-d3hdmy7t/iocage_lib.egg-info/requires.txt
            writing top-level names to /tmp/pip-modern-metadata-d3hdmy7t/iocage_lib.egg-info/top_level.txt
            writing manifest file '/tmp/pip-modern-metadata-d3hdmy7t/iocage_lib.egg-info/SOURCES.txt'
            reading manifest file '/tmp/pip-modern-metadata-d3hdmy7t/iocage_lib.egg-info/SOURCES.txt'
            adding license file 'LICENSE'
            writing manifest file '/tmp/pip-modern-metadata-d3hdmy7t/iocage_lib.egg-info/SOURCES.txt'
            creating '/tmp/pip-modern-metadata-d3hdmy7t/iocage_lib-1.10.dist-info'
            running dist_info
            creating /tmp/pip-modern-metadata-d3hdmy7t/iocage_cli.egg-info
            writing /tmp/pip-modern-metadata-d3hdmy7t/iocage_cli.egg-info/PKG-INFO
            writing dependency_links to /tmp/pip-modern-metadata-d3hdmy7t/iocage_cli.egg-info/dependency_links.txt
            writing entry points to /tmp/pip-modern-metadata-d3hdmy7t/iocage_cli.egg-info/entry_points.txt
            writing requirements to /tmp/pip-modern-metadata-d3hdmy7t/iocage_cli.egg-info/requires.txt
            writing top-level names to /tmp/pip-modern-metadata-d3hdmy7t/iocage_cli.egg-info/top_level.txt
            writing manifest file '/tmp/pip-modern-metadata-d3hdmy7t/iocage_cli.egg-info/SOURCES.txt'
            reading manifest file '/tmp/pip-modern-metadata-d3hdmy7t/iocage_cli.egg-info/SOURCES.txt'
            adding license file 'LICENSE'
            writing manifest file '/tmp/pip-modern-metadata-d3hdmy7t/iocage_cli.egg-info/SOURCES.txt'
            creating '/tmp/pip-modern-metadata-d3hdmy7t/iocage_cli-1.10.dist-info'
            Traceback (most recent call last):
              File "/home/ab/venvs/cage2jail/py3.11/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
                main()
              File "/home/ab/venvs/cage2jail/py3.11/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main
                json_out["return_val"] = hook(**hook_input["kwargs"])
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "/home/ab/venvs/cage2jail/py3.11/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 175, in prepare_metadata_for_build_wheel
                return hook(metadata_directory, config_settings)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "/tmp/pip-build-env-9va5p6b9/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 376, in prepare_metadata_for_build_wheel
                self._bubble_up_info_directory(metadata_directory, ".egg-info")
              File "/tmp/pip-build-env-9va5p6b9/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 345, in _bubble_up_info_directory
                info_dir = self._find_info_directory(metadata_directory, suffix)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "/tmp/pip-build-env-9va5p6b9/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 356, in _find_info_directory
                assert len(candidates) == 1, f"Multiple {suffix} directories found"
                       ^^^^^^^^^^^^^^^^^^^^
            AssertionError: Multiple .egg-info directories found
            [end of output]
      
        note: This error originates from a subprocess, and is likely not a problem with pip.
      error: metadata-generation-failed
      
      × Encountered error while generating package metadata.
      ╰─> See above for output.
      
      note: This is an issue with the package mentioned above, not pip.
      hint: See above for details.
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× pip subprocess to install backend dependencies did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

Manually trying to install dependency using the name @ URI syntax, i.e., pip install 'iocage @ git+https://github.com/freebsd/[email protected]' fails with similar errors.

FWIW, it seems that one .egg-info directory is generated for each top-level package (iocage_cli and iocage_lib). According to pypa/pip#8201, one setup.py creating two distribution packages is not supported.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions