What is pythons site-packages directory?

What is pythons site-packages directory?

site-packages is the target directory of manually built Python packages. When you build and install Python packages from source (using distutils, probably by executing python setup.py install), you will find the installed modules in site-packages by default.

There are standard locations:

  • Unix (pure)1: prefix/lib/pythonX.Y/site-packages
  • Unix (non-pure): exec-prefix/lib/pythonX.Y/site-packages
  • Windows: prefixLibsite-packages

1 Pure means that the module uses only Python code. Non-pure can contain C/C++ code as well.

site-packages is by default part of the Python search path, so modules installed there can be imported easily afterwards.


Useful reading

When you use --user option with pip, the package gets installed in users folder instead of global folder and you wont need to run pip command with admin privileges.

The location of users packages folder can be found using:

python -m site --user-site

This will print something like:

C:Users%USERNAME%AppDataRoamingPythonPython35site-packages

When you dont use --user option with pip, the package gets installed in global folder given by:

python -c import site; print(site.getsitepackages())

This will print something like:

[C:\Program Files\Anaconda3, C:\Program Files\Anaconda3\lib\site-packages

Note: Above printed values are for On Windows 10 with Anaconda 4.x installed with defaults.

What is pythons site-packages directory?

site-packages is just the location where Python installs its modules.

No need to find it, python knows where to find it by itself, this location is always part of the PYTHONPATH (sys.path).

Programmatically you can find it this way:

import sys
site_packages = next(p for p in sys.path if site-packages in p)
print site_packages

/Users/foo/.envs/env1/lib/python2.7/site-packages

Leave a Reply

Your email address will not be published. Required fields are marked *