Troubleshooting Common Issues in PyPA pip
Project Description
PyPA is the Python Packaging Authority, a group of Python developers and enthusiasts who are dedicated to improving the Python packaging ecosystem. They are responsible for maintaining and improving tools such as pip, the package manager for Python packages. pip is a command-line tool for installing and managing Python packages, which are collections of code that can be used in your Python projects. With pip, you can easily install, upgrade, and remove Python packages, as well as manage the dependencies of your projects. pip is a crucial tool for any Python developer, as it allows you to easily share and reuse code, and to easily install and manage the libraries and tools that you need for your projects.
Troubleshooting PyPA pip with the Lightrun Developer Observability Platform
Lightrun is a Developer Observability Platform, allowing developers to add telemetry to live applications in real-time, on-demand, and right from the IDE.
- Instantly add logs to, set metrics in, and take snapshots of live applications
- Insights delivered straight to your IDE or CLI
- Works where you do: dev, QA, staging, CI/CD, and production
Start for free today
The following issues are the most popular issues regarding this project:
Raise a warning when pip falls back to the “legacy” direct install code
This issue arose due to virtualenvs created with virtualenv
coming with wheel
installed:
$ virtualenv venv
created virtual environment CPython3.8.2.final.0-64 in 222ms
creator CPython3Posix(dest=/home/ran/venv, clear=False, global=False)
seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/home/ran/.local/share/virtualenv/seed-app-data/v1.0.1)
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
$ . venv/bin/activate
(venv) $ pip list
Package Version
---------- -------
pip 20.0.2
setuptools 46.1.3
wheel 0.34.2
For those using python -m venv
to create virtualenvs, you may notice that wheel
is not automatically included:
$ python3.8 -m venv venv
$ . venv/bin/activate
(venv) $ pip list
Package Version
---------- -------
pip 19.2.3
setuptools 41.2.0
With the proliferation of virtual environments, many users may not be aware that they need to install a wheel as well. It is worth investigating if it is feasible for python -m venv
to include an additional parameter allowing the installation of wheels too upon the creation of such environment.
pip editable install fails with pyproject.toml, even with no setup.py import error
To use setup.py and setup.cfg in ansible/ansible-builder, it is essential to have setuptools package installed beforehand as a requirement indicated within the build-system
table of configurations. To rectify any issues related thereto, a patch was successfully implemented which effectively solved them all:
From dc6ad207894e62124cbeb4f4aa1cf046a4a1559d Mon Sep 17 00:00:00 2001
From: Ellen Marie Dash <me@duckie.co>
Date: Sat, 17 Oct 2020 21:07:02 -0400
Subject: [PATCH] Fix editable pip installations.
The build process needs setuptools before reading setup.py, which means
it needs to be specified in pyproject.toml's `build-system` table.
---
pyproject.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pyproject.toml b/pyproject.toml
index e4666a4..f3c682e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -46,5 +46,5 @@ exclude = '''
'''
[build-system]
-requires = ["poetry>=1.0.5"]
+requires = ["setuptools", "poetry>=1.0.5"]
build-backend = "poetry.masonry.api"
--
2.25.4
index-url extra-index-url install priority order
Security researchers recently revealed a new exploit, dubbed Dependency Confusion. Read the detailed post on Medium to further explore this serious vulnerability and its implications for modern development projects.
Add install option to hide “Requirement already satisfied” log info
A viable, effective solution is available and can easily be implemented:
pip install -r requirements.txt | grep -v 'already satisfied'
No module named pip
The problem is solved by uninstalling pipx, purging any associated local files in ~/.local/pipx
, and finally re-issuing a fresh reinstallation with an updated version of Python.
pip install -e does not install setup.py install_requires dependencies
Upon further investigation, it was found that the issue could be attributed to a project_name.egg-info
folder adjacent to setup.py having outdated requirements specified in its ./project_name.egg-info/requires.txt
file.
By examining this bug, we can see that pip install -e
operates on the project_name.egg-info
folder in a setup.py directory, relying only on its outdated requires.txt
file for guidance; whereas using pip install allows for the parsing of setup.py
and updating ./src/project_name.egg-info/requires.txt
to reflect any changes made within the code itself residing under ./src/project_name.
Additionally, an outdated project_name.egg-info
folder can be easily renamed to test.egg-info
without interfering with pip install -e
ability to read the updated requires.txt
file in its newer location and name.
The following setup.py
is sufficient to reproduce the bug:
from setuptools import setup
setup(name='project', install_requires=['gitpython'])
Although the test.egg-info
file is incorrectly named, its presence raises an interesting dilemma: should pip install -e
double check the requires.txt
with setup.py for accuracy? It remains to be determined whether this constitutes a bug or not.
More issues from PyPA repos
Troubleshooting pypa-pipenv | Troubleshooting pypa-setuptools
It’s Really not that Complicated.
You can actually understand what’s going on inside your live applications.