198

I have recently started learning Python and I have 2 questions relating to modules.

  1. Is there a way to obtain a list of Python modules available (i.e. installed) on a machine?
  2. I am using Ubuntu Karmic and Synaptic for package management. I have just installed a python module.Where is the module code actually stored on my machine? (is there a default [recommended] location that modules are stored)?
3
  • 1
    If you import sys then run sys.path(), it shows all the paths for python. /usr/local/lib/python3.x/dist-packages worked for me. Commented Mar 9, 2021 at 17:01
  • In python 3.9, path is not a function, it's A list of strings that specifies the search path for modules. docs Commented Apr 21, 2021 at 16:44
  • It should be sys.path Commented Jun 7, 2024 at 6:06

13 Answers 13

178
  1. Is there a way to obtain a list of Python modules available (i.e. installed) on a machine?

This works for me:

help('modules') 
  1. Where is the module code actually stored on my machine?

Usually in /lib/site-packages in your Python folder. (At least, on Windows.)

You can use sys.path to find out what directories are searched for modules.

Sign up to request clarification or add additional context in comments.

2 Comments

If you want the location of a specific module, import it and look at it's __file__ attribute. Works for most of them.
@NoufalIbrahim your answer is worth like the answer itself. TY. you can append it to make it bold for users.
160

On python command line, first import that module for which you need location.

import module_name 

Then type:

print(module_name.__file__) 

For example to find out "pygal" location:

import pygal print(pygal.__file__) 

Output:

/anaconda3/lib/python3.7/site-packages/pygal/__init__.py 

2 Comments

When I tried this, I got this error: Unable to initialize device PRN, any idea why? Thanks.
Exactly what I needed!
47

If you are using pip:

pip show <package name> 

Sample output of pip show tensorflow:

Name: tensorflow Version: 2.1.1 Summary: TensorFlow is an open source machine learning framework for everyone. Home-page: https://www.tensorflow.org/ Author: Google Inc. Author-email: [email protected] License: Apache 2.0 Location: /home/user/.local/lib/python3.6/site-packages Requires: termcolor, six, astor, numpy, grpcio, absl-py, protobuf, tensorflow-estimator, tensorboard, gast, keras-applications, opt-einsum, wheel, keras-preprocessing, google-pasta, scipy, wrapt Required-by: tf-models-official 

The installed location is shown at Location:/home/user/.local/lib/python3.6/site-packages.

Comments

20

On Windows machine python modules are located at (system drive and python version may vary):

C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib 

4 Comments

I guess it is best practice to use %appdata% in the address window of the Explorer to get quickly to the Roaming folder and jump back and forth to the Local folder then.
Where are python modules stored on Linux?
Note: I found mine in C:\Python39\Lib\site-packages, probably because I installed python differently...
@AndyS You probably are using python 3.9
13

You can find module code by first listing the modules:

help("modules") 

This spits out a list of modules Python can import. At the bottom of this list is a phrase:

Enter any module name to get more help. Or, type "modules spam" to search for modules whose name or summary contain the string "spam".

To find module location:

help("module_Name") 

for example:

help("signal") 

A lot of information here. Scroll to the bottom to find its location

/usr/lib/python3.5/signal.py 

Copy link. To see code, after exiting Python REPL:

nano /usr/lib/python3.5/signal.py 

Comments

9

Run python CLI for info

python -c "import sys; print('\n'.join(sys.path))" 

Comments

5
  1. You can iterate through directories listed in sys.path to find all modules (except builtin ones).
  2. It'll probably be somewhere around /usr/lib/pythonX.X/site-packages (again, see sys.path). And consider using native Python package management (via pip or easy_install, plus yolk) instead, packages in Linux distros-maintained repositories tend to be outdated.

Comments

3

If you are using conda or pip to install modules you can use

pip list 

or

conda list 

to display all the modules. This will display all the modules in the terminal itself and is much faster than

>>> help('modules') 

2 Comments

Yes, pip list | grep module_name_or_part_of_name to check for a particular module.
This shows you modules but doesn't tell you where the modules are stored
2

1) Using the help function

Get into the python prompt and type the following command:

>>>help("modules") 

This will list all the modules installed in the system. You don't need to install any additional packages to list them, but you need to manually search or filter the required module from the list.

2) Using pip freeze

sudo apt-get install python-pip pip freeze 

Even though you need to install additional packages to use this, this method allows you to easily search or filter the result with grep command. e.g. pip freeze | grep feed.

You can use whichever method is convenient for you.

Comments

1

On a 2023 Windows machine with Python 3.8 or later installed with defaults:

Press the Windows key, paste or type the following and press enter

explorer %LOCALAPPDATA%\Programs\Python 

This opens %LOCALAPPDATA%\Programs\Python which contains directories named per the various versions of Python installed (perhaps, in the past), and their respective installed packages.

Comments

0

On Linux, use grep to find a chosen module, no extra installation needed for that, quickly done.

The -r stands for recursive search in the sub-directories and the l to show only the files, not the directories. Usually you can see the locations from the upcoming list, and you can stop the output with Ctrl-C.

grep -rl module_name_or_part_of_name / 

or, borrowed from the value comment here from this user:

pip list | grep module_name_or_part_of_name 

Comments

0

On my local machine (Win 10), it has the following path:

c:\Users\administrator\AppData\Roaming\Python\Python38\ 

Comments

0

sys.meta_path is another source of modules, in addition to sys.path. It contains info that help('module') doesn't.

meta_path can explain unexpected import behaviors - if a module isn't on sys.path, it doesn't guarantee it won't be imported. Moreover, if a package is on sys.path, but a package with same name but different directory is in sys.meta_path, Python will import from both, prioritizing sys.path. This can be troublesome if you've intentionally removed something from the package in sys.path - Python will keep importing it from sys.meta_path. This includes certain non-Python files, like Cython's .pyx builds.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.