-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Labels
C: debugThe debug commandThe debug commandPython 2 onlyPython 2 specificPython 2 specifictype: bugA confirmed bug or unintended behaviorA confirmed bug or unintended behavior
Description
Environment
- pip version: 20.2.1
- Python version: 2.7.17
- OS: Ubuntu 18.04 64-bit
Description
Regression in dependency resolution (not the new resolver) where already installed "editable" packages are no longer taken into account when satisfying dependencies. Only happens with the combination of pip>=20.2
and Python 2.7; older pip
or using Python 3.x doesn't give the same issue. Happens with both path and VCS editable installs.
Expected behavior
Already installed editable packages should satisfy dependencies when installing another package, consistent with behaviour when using older pip
versions or newer Python versions.
How to Reproduce
- Create two basic packages:
package-a
which has no dependencies, andpackage-b
which depends only onpackage-a
- Create and activate a Python 2.7 virtualenv
- Perform an editable install of
package-a
, see a successful installation - Perform an editable install of
package-b
, seeCould not find a version that satisfies the requirement package-a
- Observe that
pip freeze
definitely containspackage-a
- Observe that
pkg_resources.get_distribution("package-a")
gives a valid result - Downgrade
pip
to an earlier version, repeat editable install ofpackage-b
, see a successful installation
Output
$ mkdir -p package_a package_b
$ cat > package_a/setup.py <<EOF
from setuptools import setup, find_packages
setup(
name="package-a",
version="0.1",
packages=find_packages(),
)
EOF
$ cat > package_b/setup.py <<EOF
from setuptools import setup, find_packages
setup(
name="package-b",
version="0.1",
packages=find_packages(),
install_requires=["package-a"],
)
EOF
$ virtualenv -p python2.7 venv
Running virtualenv with interpreter /usr/bin/python2.7
Already using interpreter /usr/bin/python2.7
New python executable in /home/alanb/tmp/venv/bin/python2.7
Also creating executable in /home/alanb/tmp/venv/bin/python
Installing setuptools, pip, wheel...
done.
$ source venv/bin/activate
$ pip --version
pip 20.2.1 from /home/alanb/tmp/venv/local/lib/python2.7/site-packages/pip (python 2.7)
$ pip install -e package_a/
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Obtaining file:///home/alanb/tmp/package_a
Installing collected packages: package-a
Running setup.py develop for package-a
Successfully installed package-a
$ pip install -e package_b/
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Obtaining file:///home/alanb/tmp/package_b
ERROR: Could not find a version that satisfies the requirement package-a (from package-b==0.1) (from versions: none)
ERROR: No matching distribution found for package-a (from package-b==0.1)
$ pip freeze
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
# Editable install with no version control (package-a==0.1)
-e /home/alanb/tmp/package_a
$ python -c 'import pkg_resources; print(pkg_resources.get_distribution("package-a"))'
package-a 0.1
$ pip install 'pip<20.2'
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Collecting pip<20.2
Using cached pip-20.1.1-py2.py3-none-any.whl (1.5 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.2.1
Uninstalling pip-20.2.1:
Successfully uninstalled pip-20.2.1
Successfully installed pip-20.1.1
$ pip install -e package_b/
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Obtaining file:///home/alanb/tmp/package_b
Requirement already satisfied: package-a in ./package_a (from package-b==0.1) (0.1)
Installing collected packages: package-b
Running setup.py develop for package-b
Successfully installed package-b
WARNING: You are using pip version 20.1.1; however, version 20.2.1 is available.
You should consider upgrading via the '/home/alanb/tmp/venv/bin/python2.7 -m pip install --upgrade pip' command.
Metadata
Metadata
Assignees
Labels
C: debugThe debug commandThe debug commandPython 2 onlyPython 2 specificPython 2 specifictype: bugA confirmed bug or unintended behaviorA confirmed bug or unintended behavior