Skip to content

Weird pip behaviour when installing package in editable mode with sys.exit inside setup.py after PEP 517 #6520

@kprzybyla

Description

@kprzybyla

Environment

  • pip version: 19.0.3 (also present in 19.1.1)
  • Python version: 3.7.3
  • OS: ArcoLinux (Arch)

Description

After adding pyproject.toml (even an empty one) to my project I noticed that installation of my project in editable mode with pip started to fail. After some investigation it turned out that having sys.exit inside setup.py causes the problem.

Expected behavior

Executing everything from reproduce steps should not raise an error or if this behavior is indeed intended, better describe the issue.

How to Reproduce

  1. Create new project directory
  2. Create pyproject.toml inside the project directory with any content (even empty)
  3. Create setup.py inside the project directory with following content:
import sys

from setuptools import setup

def main():
    setup()

if __name__ == '__main__':
    sys.exit(main())
  1. Execute pip install -e . inside the project directory

Workaround

Removing sys.exit from main entry point resolves the issue:

from setuptools import setup

def main():
    setup()

if __name__ == '__main__':
    main()

Output

Running command /home/krprzyby/PycharmProjects/pep517/venv/bin/python /home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /tmp/tmpjpen2vq1
  running egg_info
  creating UNKNOWN.egg-info
  writing UNKNOWN.egg-info/PKG-INFO
  writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
  writing top-level names to UNKNOWN.egg-info/top_level.txt
  writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
  reading manifest file 'UNKNOWN.egg-info/SOURCES.txt'
  writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
  Getting requirements to build wheel ... done
ERROR: Could not install packages due to an EnvironmentError.
Traceback (most recent call last):
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 352, in run
    resolver.resolve(requirement_set)
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_internal/resolve.py", line 131, in resolve
    self._resolve_one(requirement_set, req)
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_internal/resolve.py", line 294, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_internal/resolve.py", line 226, in _get_abstract_dist_for
    req, self.require_hashes, self.use_user_site, self.finder,
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 395, in prepare_editable_requirement
    abstract_dist.prep_for_dist(finder, self.build_isolation)
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 169, in prep_for_dist
    self.install_backend_dependencies(finder=finder)
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 123, in install_backend_dependencies
    reqs = req.pep517_backend.get_requires_for_build_wheel()
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_vendor/pep517/wrappers.py", line 71, in get_requires_for_build_wheel
    'config_settings': config_settings
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_vendor/pep517/wrappers.py", line 158, in _call_hook
    data = compat.read_json(pjoin(td, 'output.json'))
  File "/home/krprzyby/PycharmProjects/pep517/venv/lib/python3.7/site-packages/pip/_vendor/pep517/compat.py", line 12, in read_json
    with open(path, 'r', encoding='utf-8') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpjpen2vq1/output.json'

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions