package management system for Python
Pip_help.png
PyPI
PyPI - Python Version
Documentation
pip install virtualenv
pip (also known by Python 3's alias pip3) is a package manager (package management system) written in Python and is used to install and manage software packages. The Python Software Foundation recommends … Wikipedia
Factsheet
pip
Original author Ian Bicking
Initial release 28 October 2008 (17 years ago) (2008-10-28)
Factsheet
pip
Original author Ian Bicking
Initial release 28 October 2008 (17 years ago) (2008-10-28)
🌐
Wikipedia
en.wikipedia.org › wiki › Pip_(package_manager)
pip (package manager) - Wikipedia
October 25, 2025 - pip (also known by Python 3's alias pip3) is a package manager (package management system) written in Python and is used to install and manage software packages. The Python Software Foundation recommends using pip to install Python applications and its dependencies during deployment.
🌐
PyPI
pypi.org › project › pip
pip · PyPI
The PyPA recommended tool for installing Python packages. ... pip is the package installer for Python.
      » pip install pip
    
Published   Feb 05, 2026
Version   26.0.1
🌐
Python Packaging
packaging.python.org › tutorials › installing-packages
Installing Packages — Python Packaging User Guide
If you installed Python from source, with an installer from python.org, or via Homebrew you should already have pip. If you’re on Linux and installed using your OS package manager, you may have to install pip separately, see Installing pip/setuptools/wheel with Linux Package Managers.
🌐
Pip
pip.pypa.io
pip documentation v26.0.1
pip is the package installer for Python.
🌐
W3Schools
w3schools.com › python › python_pip.asp
Python PIP
PIP is a package manager for Python packages, or modules if you like.
🌐
Real Python
realpython.com › what-is-pip
Using Python's pip to Manage Your Projects' Dependencies – Real Python
December 22, 2024 - So, what exactly does pip do? pip is a package manager for Python. That means it’s a tool that allows you to install and manage libraries and dependencies that aren’t distributed as part of the standard library.
🌐
PyPI
pypi.org
PyPI · The Python Package Index
Learn how to package your Python code for PyPI.
Find elsewhere
🌐
PyPI
pypi.org › project › pip-manager
pip-manager · PyPI
pip-manager is a command line tool to make Python packages management easy.
      » pip install pip-manager
    
Published   Jun 23, 2020
Version   1.0.4
🌐
pip
pip.pypa.io › en › stable › installation
Installation - pip documentation v26.0.1
Depending on how you installed Python, there might be other mechanisms available to you for installing pip such as using Linux package managers.
🌐
Jumping Rivers
jumpingrivers.com › blog posts › python package managers
An Introduction to Python Package Managers
July 22, 2025 - Pip is one of the easier Python package managers for getting started with. It is most-likely already pre-installed with Python and is simple to use. When you install a package with pip it will install any other packages that the desired package ...
🌐
Tutorial Teacher
tutorialsteacher.com › python › pip-in-python
PIP - Package Installer for Python
The pip help command is used to ... Usage: pip <command> [options] Commands: install Install packages. download Download packages. uninstall Uninstall packages. freeze Output installed packages in requirements format. list List installed packages. show Show information about installed packages. check Verify installed packages have compatible dependen cies. config Manage local and ...
Top answer
1 of 5
32

The biggest disadvantage I see with using pip to install Python modules on your system, either as system modules or as user modules, is that your distribution’s package management system won’t know about them. This means that they won’t be used for any other package which needs them, and which you may want to install in the future (or which might start using one of those modules following an upgrade); you’ll then end up with both pip- and distribution-managed versions of the modules, which can cause issues (I ran into yet another instance of this recently). So your question ends up being an all-or-nothing proposition: if you only use pip for Python modules, you can no longer use your distribution’s package manager for anything which wants to use a Python module...

The general advice given in the page you linked to is very good: try to use your distribution’s packages as far as possible, only use pip for modules which aren’t packaged, and when you do, do so in your user setup and not system-wide. Use virtual environments as far as possible, in particular for module development. Especially on Arch, you shouldn’t run into issues caused by older modules; even on distributions where that can be a problem, virtual environments deal with it quite readily.

It’s always worth considering that a distribution’s library and module packages are packaged primarily for the use of other packages in the distribution; having them around is a nice side-effect for development using those libraries and modules, but that’s not the primary use-case.

2 of 5
15

TL;DR

  • use pip (+ virtualenv) for stuff (libs, frameworks, maybe dev tools) your projects (that you develop) use
  • use the package manager for applications you use (as an end-user)

Development dependencies

If you're developing software in Python, you'll want to use pip for all of the project's dependencies, be they runtime dependencies, build-time dependencies or stuff needed for automated testing and automated compliance checks (linter, style checker, static type checker ...)

There are several reasons for this:

  • This allows you to use virtualenv (either directly or through virtualenvwrapper or pipenv or other means) to separate dependencies of different projects from each other and to isolate the python applications you use "in production" (as a user) from any exotic shenanigans (or even just incompatibilities) that may go on in development.
  • This allows you to track all of a project's dependencies in a requirements.txt (if your project is an application) or setup.py (if your project is a library or framework) file. This can be checked into revision control (e.g. Git) together with the source code, so that you always know which version of your code relied on what versions of your dependencies.
  • The above enables other developers to collaborate on your project even if they don't use the same Linux distribution or not even the same operating system (if the used dependencies are also available on Mac and Windows or whatever they happen to use, that is)
  • You don't want automatic updates of your operating system's package manager to break your code. You should update your dependencies, but you should do so consciously and at times you choose, so that you can be ready to fix your code or roll back the update. (Which is easy if you track the complete dependency declaration in your revision control system, together with your code.)

If you feel you need to separate direct and indirect dependencies (or distinguish between acceptable version range for a dependency and actual version used, cf. "version pinning") look into pip-tools and/or pipenv. This will also allow you to distinguish between build and test dependencies. (The distinction between build and runtime dependencies can probably be encoded in setup.py)

Applications you use

For stuff that you use as normal application and that just happens to be written in Python, prefer your operating system's package manager. It'll make sure it stays reasonably up-to-date and compatible to other stuff installed by the package manager. Most Linux distributions will also assert that they don't distribute any malware.

If something you need isn't available in your distribution's default package repo, you can check out additional package repos (e.g. launchpad of deb-based distros) or use pip anyway. If the latter, use --user to install into your user's home instead of system-wide, so that you're less likely to break your Python installation. (For stuff you only need temporarily or seldom, you may even use a virtualenv.)

🌐
Medium
medium.com › @kumuthu53 › a-deep-dive-into-pip-the-python-package-manager-e6af63bceee8
A Deep Dive Into Pip: The Python Package Manager | by Kumuthu Edirisinghe | Medium
December 29, 2022 - Pip was first introduced in 2008 by Ian Bicking. The name, according to its creator, is a recursive acronym for “Pip Installs Packages”. It replaced easy_install which was the previously used package manager.
🌐
AlgoMaster
algomaster.io › learn › python › pip-package-manager
Pip Package Manager | Python | AlgoMaster.io | AlgoMaster.io
January 3, 2026 - That’s where pip, the Python Package Installer, comes in. It’s your go-to tool for installing, upgrading, and managing Python packages from the Python Package Index (PyPI).
🌐
DataCamp
datacamp.com › tutorial › pip-python-package-manager
Pip Python Tutorial for Package Management
February 16, 2023 - The most popular package manager for Python is pip. Developed in 2008, pip (an acronym of “pip Install Packages”) is today the standard tool for installing Python packages and their dependencies in a secure manner. Most recent distributions of Python come with pip preinstalled.
🌐
Inedo
blog.inedo.com › python › managing-python-packages
Python Package Managers Explained
May 1, 2025 - PyPI packages allow developers to share and reuse code rather than having to reinvent the wheel. As PyPI grew, the need for a package manager became so apparent that Python eventually created its own standard package manager: pip.
🌐
Visual Studio Marketplace
marketplace.visualstudio.com › items
Pip Package Manager - Visual Studio Marketplace
Extension for Visual Studio Code - Manage Python pip packages dependencies
🌐
Medium
medium.com › python-for-engineers › pip-in-python-b4a4e49a4a85
Pip In Python. Package manager for Python that helps… | by Shaloo Mathew | LearnPython | Medium
September 25, 2024 - Pip is a package manager for Python. It helps you install and manage libraries(also called packages) that are not included in Python by default. With pip, you can easily add extra tools or…
Top answer
1 of 3
22

Types of Packages
Egg vs Wheel vs Neither. What's meant by neither is that a python package can be installed from its "source" without being packaged as an egg or wheel.

Packaging Utilities
There are several libraries which provide utilities for packaging python applications, including distutils and setuptools. There is already an excellent post on this.

easy_install
Part of setuptools, allows building and installing python packages. Often discouraged in favor of Pip. Designed to make installation of packages easy, doing the chore of downloading and moving them to the correct place for you (hence the name).

Pip
A package manager for python packages, and a replacement for easy_install! See here for some reasons why people prefer it over easy_install. Can do neat things like install a package directly from a git repository or compile C extensions on the target machine. The latter is debatable as to whether or not it's desirable, but nonetheless it's a nice feature to have if you want it.

PyPI
The python package index, where easy_install and Pip search for available packages, by default. Basically a giant online repository of modules that are accepted by the community.

virtualenv
A way of hacking your environment variables to "isolate" an installation of python and it's related modules. Prefers Pip, because Ian Bicking wrote them both. Basically, you use pip to install virtualenv system wide, which then allows you to create python virtual environments, each with their own copy of python, pip, and assorted modules. This lets you have multiple versions of python or install a module just for testing, without mucking up your system-wide python install.

virtualenvwrapper
A really handy shell script that makes creating and tearing down virtual environments easier.

site-packages
One of the supported locations for installing python modules into. Lives someplace like /usr/lib/pythonX.X/site-packages. There are other supported locations, like dist-packages or user specific locations.

What does all this mean for you?
I'd recommend you don't pay any attention to easy_install and just use pip. Please also always use virtualenv. Usually, the only python modules you should install system-wide on your workstation are pip and virtualenv. I've completely ignored eggs and wheels, but if you plan to distribute packages professionally or host them on PyPI, you probably want to investigate those. Also, if you are creating python packages, you will need to learn to write a setup script, with setuptools. My recommendation is to never use distutils.

Some more Reading
A page on python.org about packaging which covers a lot of these topics
Python packaging is a nightmare
A great post that goes against the most common recommendations, including mine!

2 of 3
3

There's some mixing in the options you are listing:

  • virtualenv - is used to create isolated environments
  • site-packages - standard location where python packages / libs reside

  • pypi - is a repository

  • easy_install - is found on the setuptools package

  • pip - was written to improve easy_install.

about python eggs