Find the Location of Python site-packages Directory

How do I find the location of my Python site-packages directory? The “site-packages” directory is where third-party packages are installed for Python. In this article, we will explain different methods to find the location of the “site-packages” directory.

A quick way to find the “site-packages” directory is by using the site module. You can simply import the module and use the getsitepackages() function to get the “site-packages” directory. However, we will discuss more methods like, the sys module, the os module, and the distutils package with examples.

1. site Module to Find Directory of Python Site-Packages

The site module allows you to access the python interpreter and the installed packages, one of the functions provided by the site module is getsitepackages(), which returns a list of directories that contain the installed packages, including the “site-packages” directory.

See the following code example:


# Import site module
import site

# Get the list of directories 
site_packages_dirs = site.getsitepackages()

# Find the "site-packages" directory in the list
for dir in site_packages_dirs:
    if dir.endswith("site-packages"):
        target_dir = dir
        break
    else:
        target_dir=None
print(target_dir)

Yields below output.


# Output:
c:\Users\Ali\Desktop\SparkByExamples\env\Lib\site-packages

There are two types of python “site-packages” directories. One is called the global site-packages directory and the virtual environment “site-packages”.

You can run the following command on your terminal to find the directory of python global site-packages.


# Find Location of Global "site-packages"
python -m site

Yields below output.


# Output:
c:\Users\Ali\AppData\Local\Programs\Python\Python311\Lib\site-packages

This will return the location of the global directory of python “site-packages”. You can also add another parameter to get the location per user.


#Find Location of Per-user "site-packages"
python -m site --user-site

2. sys Module – Python Site-Packages Directory

The sys module is another way to access various system-specific parameters and functions. One of the attributes provided by the sys module is path, which is a list of directories that Python searches for modules.


# Find the "site-packages" directory in the "sys.path" list
import sys
# Iterate over the Directories
for dir in sys.path:
    if dir.endswith("site-packages"):
        target_dir = dir
    else:
        target_dir = None

print(target_dir)

Yields below output.


# Output:
c:\Users\Ali\Desktop\SparkByExamples\env\Lib\site-packages

3. Using os Module

The os module is a built-in module in Python that provides a way to interact with the operating system. The os module provides several functions for navigating the file system and getting information about files and directories. One of these functions is listdir() which returns a list of the files and directories in a specified directory.


# Using os to get the Location
import os
dir_path = os.path.dirname(os.__file__) + '/site-packages'
print(dir_path)

Yields below output.


# Output:
C:\Users\Ali\AppData\Local\Programs\Python\Python311\Lib\site-packages

4. distutils – Find Directory of “site-packages”

The distutils module in Python provides support for building and distributing Python modules. It includes a sysconfig module, which provides functions for retrieving configuration information about the Python installation.


# distutils library to get the location of Python "site-packages"
from distutils.sysconfig import get_python_lib

site_packages_dir = get_python_lib()

print(site_packages_dir)

Yields below output.


# Output:
c:\Users\Ali\Desktop\SparkByExamples\env\Lib\site-packages

The sysconfig is also available is a standalone module, which you can use directly instead of importing it from the distutil.


# Using the sysconfig module
import sysconfig
print(sysconfig.get_paths())

The location return by the sysconfig on Debian seems like to be not available, this is because when you install packages using pip, it will go into ‘dist-packages’ and not to ‘site-packages’.

5. Use Editor – The Optimal and Easy Way

If you are using a virtual environment for your project, you can find the python site packages in the editor. The editor maybe is of your choice. In my case, I am using VS code and my virtual environment is “env”. You can see the complete path to the “site-packages” directory.

find Python site-packages directory
“site-packages” in Vs Code

6. Summary and Conclusion

In this article, we have learned how to find the location of the python “site-packages” directory. You have learned multiple ways to do this. If you are working in VS Code or any other editor along with a virtual environment, this directory is already available to you. Hope this article was helpful. Leave your questions in the comment section.

Happy Coding!

AlixaProDev

I am an astute software engineer with extensive 3+ years of experience in developing full-stack web applications. My skillets include building backend services for different databases. Mainly I work with Python, Flask, Django, and FastAPIs. Being Python Specialist, I have worked with Numpy, Pandas, and other Python Libraries to build tools that make ETL normalization easier.

Leave a Reply