Requirements For Installing Packages
Requirements For Installing Packages
It’s important to note that the term “package” in this context is being used to
describe a bundle of software to be installed (i.e. as a synonym for
a distribution). It does not refer to the kind of package that you import in your
Python source code (i.e. a container of modules). It is common in the Python
community to refer to a distribution using the term “package”. Using the term
“distribution” is often not preferred, because it can easily be confused with a
Linux distribution, or another larger software distribution like Python itself.
Unix/macOSWindows
py --version
You should get some output like Python 3.6.3. If you do not have Python, please
install the latest 3.x version from python.org or refer to the Installing
Python section of the Hitchhiker’s Guide to Python.
Note
It’s because this command and other suggested commands in this tutorial are
intended to be run in a shell (also called a terminal or console). See the Python
for Beginners getting started tutorial for an introduction to using your
operating system’s shell and interacting with Python.
Note
If you’re using an enhanced shell like IPython or the Jupyter notebook, you
can run system commands like those in this tutorial by prefacing them with
a ! character:
In [1]: import sys
!{sys.executable} --version
Python 3.6.3
Note
Due to the way most Linux distributions are handling the Python 3 migration,
Linux users using the system Python without creating a virtual environment
first should replace the python command in this tutorial with python3 and
the python -m pip command with python3 -m pip --user. Do not run any of the commands
in this tutorial with sudo: if you get a permissions error, come back to the
section on creating virtual environments, set one up, and then continue with
the tutorial as written.
Unix/macOSWindows
py -m pip --version
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.
If pip isn’t already installed, then first try to bootstrap it from the standard
library:
Unix/macOSWindows
py -m ensurepip --default-pip
Run python get-pip.py. [2] This will install or upgrade pip. Additionally, it will
install Setuptools and wheel if they’re not installed already.
Warning
Unix/macOSWindows
py -m pip install --upgrade pip setuptools wheel
Optionally, create a virtual environment
See section below for details, but here’s the basic venv [3] command to use on
a typical Linux system:
Unix/macOSWindows
py -m venv tutorial_env
tutorial_env\Scripts\activate
This will create a new virtual environment in the tutorial_env subdirectory, and
configure the current shell to use it as the default python environment.
Imagine you have an application that needs version 1 of LibFoo, but another
application requires version 2. How can you use both these applications? If
you install everything into /usr/lib/python3.6/site-packages (or whatever your
platform’s standard location is), it’s easy to end up in a situation where you
unintentionally upgrade an application that shouldn’t be upgraded.
Or more generally, what if you want to install an application and leave it be? If
an application works, any change in its libraries or the versions of those
libraries can break the application.
Also, what if you can’t install packages into the global site-packages directory?
For instance, on a shared host.
In all these cases, virtual environments can help you. They have their own
installation directories and they don’t share libraries with other virtual
environments.
Currently, there are two common tools for creating Python virtual
environments:
Using venv:
Unix/macOSWindows
py -m venv <DIR>
<DIR>\Scripts\activate
Using virtualenv:
Unix/macOSWindows
virtualenv <DIR>
<DIR>\Scripts\activate
For more information, see the venv docs or the virtualenv docs.
The use of source under Unix shells ensures that the virtual environment’s
variables are set within the current shell, and not in a subprocess (which then
disappears, having no useful effect).
Unix/macOSWindows
py -m pip install "SomeProject"
Unix/macOSWindows
py -m pip install "SomeProject==1.4"
To install greater than or equal to one version and less than another:
Unix/macOSWindows
py -m pip install "SomeProject>=1,<2"
Unix/macOSWindows
py -m pip install "SomeProject~=1.4.2"
In this case, this means to install any version “==1.4.*” version that’s also
“>=1.4.2”.
If pip does not find a wheel to install, it will locally build a wheel and cache it
for future installs, instead of rebuilding the source distribution in the future.
Upgrading packages
Upgrade an already installed SomeProject to the latest from PyPI.
Unix/macOSWindows
py -m pip install --upgrade SomeProject
Unix/macOSWindows
py -m pip install --user SomeProject
For more information see the User Installs section from the pip docs.
Note that the --user flag has no effect when inside a virtual environment - all
installation commands will affect the virtual environment.
If SomeProject defines any command-line scripts or console entry points, --user will
cause them to be installed inside the user base’s binary directory, which may
or may not already be present in your shell’s PATH. (Starting in version 10, pip
displays a warning when installing any scripts to a directory outside PATH.) If
the scripts are not available in your shell after installation, you’ll need to add
the directory to your PATH:
On Linux and macOS you can find the user base binary directory by
running python -m site --user-base and adding bin to the end. For example, this
will typically print ~/.local (with ~ expanded to the absolute path to your
home directory) so you’ll need to add ~/.local/bin to your PATH. You can set
your PATH permanently by modifying ~/.profile.
On Windows you can find the user base binary directory by running py -
m site --user-site and replacing site-packages with Scripts. For example, this could
return C:\Users\Username\AppData\Roaming\Python36\site-packages so you would need to
set your PATH to include C:\Users\Username\AppData\Roaming\Python36\Scripts. You can
set your user PATH permanently in the Control Panel. You may need to
log out for the PATH changes to take effect.
Requirements files
Install a list of requirements specified in a Requirements File.
Unix/macOSWindows
py -m pip install -r requirements.txt
Unix/macOSWindows
py -m pip install -e SomeProject @ git+https://git.repo/some_pkg.git # from git
py -m pip install -e SomeProject @ hg+https://hg.repo/some_pkg # from mercurial
py -m pip install -e SomeProject @ svn+svn://svn.repo/some_pkg/trunk/ # from svn
py -m pip install -e SomeProject @ git+https://git.repo/some_pkg.git@feature # from a branch
Installing from other Indexes
Install from an alternate index
Unix/macOSWindows
py -m pip install --index-url http://my.package.repo/simple/ SomeProject
Unix/macOSWindows
py -m pip install --extra-index-url http://my.package.repo/simple SomeProject
Unix/macOSWindows
py -m pip install -e <path>
Unix/macOSWindows
py -m pip install <path>
Unix/macOSWindows
py -m pip install ./downloads/SomeProject-1.0.4.tar.gz
Install from a local directory containing archives (and don’t check PyPI)
Unix/macOSWindows
py -m pip install --no-index --find-links=file:///local/dir/ SomeProject
py -m pip install --no-index --find-links=/local/dir/ SomeProject
py -m pip install --no-index --find-links=relative/dir/ SomeProject
Installing Prereleases
Find pre-release and development versions, in addition to stable versions. By
default, pip only finds stable versions.
Unix/macOSWindows
py -m pip install --pre SomeProject
Installing “Extras”
Extras are optional “variants” of a package, which may include additional
dependencies, and thereby enable additional functionality from the package. If
you wish to install an extra for a package which you know publishes one, you
can include it in the pip installation command:
Unix/macOSWindows
py -m pip install "SomePackage[PDF]"
py -m pip install "SomePackage[PDF]==3.0"
py -m pip install -e ".[PDF]" # editable project in current directory
[1]
“Secure” in this context means using a modern browser or a tool like curl that
verifies SSL certificates when downloading from https URLs.
[2]
[3]
Beginning with Python 3.4, venv (a stdlib alternative to virtualenv) will create
virtualenv environments with pip pre-installed, thereby making it an equal
alternative to virtualenv.
[4]
The compatible release specifier was accepted in PEP 440 and support was
released in Setuptools v8.0 and pip v6.0
Next
Managing Application Dependencies
Previous
Tutorials