build_meta doesn't use a fresh dist directory, which causes ValueError unpacking tuple
See original GitHub issueIf you use pip install .
on a source directory that already has a dist
, the existing directory structure is used when preparing the wheel. This causes an exception if an existing wheel with a different name exists, because build_meta assumes there’s only one wheel in dist
.
Here’s a script to create a MWE repo:
#!/usr/bin/bash
mkdir /tmp/demo_dist_517
cd /tmp/demo_dist_517
echo "from setuptools import setup; setup()" > setup.py
echo "0.0.1" > VERSION
cat > setup.cfg << EOF
[metadata]
name = foo
version = file: VERSION
EOF
cat > pyproject.toml << EOF
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
EOF
At this point your repo looks like this:
$ tree
├── pyproject.toml
├── setup.cfg
├── setup.py
└── VERSION
Create a wheel in dist
, then change the version:
pip wheel . --no-deps -w dist
echo "0.0.2" > VERSION
Now try to create a wheel from the repo:
pip wheel . -w dist
This will trigger an error in
build_meta
: File “/tmp/pip-build-env-plomixa1/overlay/…/setuptools/build_meta.py”, line 157, in _file_with_extension file, = matching ValueError: too many values to unpack (expected 1) Building wheel for foo (PEP 517) … error Failed building wheel for foo
This is pretty easy to work around, obviously, since the user can just remove dist
before invoking any pip
commands, but it might be better to do the wheel build in a clean directory if possible.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:2
- Comments:33 (31 by maintainers)
Top GitHub Comments
I’ll do it.
@webknjaz I have no objections, but I won’t have much time until this weekend at the earliest. @benoit-pierre or @jaraco feel free to cut a release.