Coder Perfect

How can I get a list of Python modules that are installed locally?


I’d want to receive a list of Python modules that are installed in my Python environment (UNIX server).

What is the best way to acquire a list of Python modules that are installed on your computer?

Asked by Léo Léopold Hertz 준영

Solution #1


in a shell/prompt for Python

Answered by ChristopheD

Solution #2

My $0.50 for obtaining a pip freeze-like list from a Python script is as follows:

import pip
installed_packages = pip.get_installed_distributions()
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
     for i in installed_packages])

As a (excessively long) one-liner:

sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])


['behave==1.2.4', 'enum34==1.0', 'flask==0.10.1', 'itsdangerous==0.24', 
 'jinja2==2.7.2', 'jsonschema==2.3.0', 'markupsafe==0.23', 'nose==1.3.3', 
 'parse-type==0.3.4', 'parse==1.6.4', 'prettytable==0.7.2', 'requests==2.3.0',
 'six==1.6.1', 'vioozer-metadata==0.1', 'vioozer-users-server==0.1', 

This method applies to packages installed via setuptools, pip, and (heaven forbid) easy install, and it can be applied to a system or a virtual environment.

I saved the result of this call in my flask server, so now when I call it with, I get a list of packages installed on the virtualenv of the server. Debugging becomes a lot easier as a result.

When the Python interpreter is launched in the same directory as a file, it does not list the package installed by, which is a peculiar behavior.

$ cd /tmp
$ virtualenv test_env
New python executable in test_env/bin/python
Installing setuptools, pip...done.
$ source test_env/bin/activate
(test_env) $ 
(test_env) $ git clone
Cloning into 'behave'...
remote: Reusing existing pack: 4350, done.
remote: Total 4350 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4350/4350), 1.85 MiB | 418.00 KiB/s, done.
Resolving deltas: 100% (2388/2388), done.
Checking connectivity... done.

In /tmp/behave, we have behave’s

(test_env) $ ls /tmp/behave/
(test_env) $ cd /tmp/behave && pip install . 
running install
Installed /private/tmp/test_env/lib/python2.7/site-packages/enum34-1.0-py2.7.egg
Finished processing dependencies for behave==1.2.5a1
>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['behave==1.2.5a1', 'enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()
>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()

Because the working directory contains behave’s file, behave==1.2.5a1 is missing from the second example.

There was no mention of this problem in the manual. Perhaps I’ll file a bug report about it.

Answered by Adam Matan

Solution #3

Now, I tested these procedures for myself, and I received exactly what was promised: all of the modules.

Unfortunately, you don’t really care about the stdlib; you already know what you receive when you install Python.

I really want the equipment that I set up.

Surprisingly, what actually worked well was:

pip freeze

Which returned:


I say “surprise” since the package install tool is exactly where one would expect to find this feature, albeit not under the label “freeze,” but python packaging is so bizarre that this utility makes sense to me. Python 2.7, Pip 0.8.2.

Answered by chiggsy

Solution #4

You have access to the following features since pip version 1.3:

pip list

This appears to be syntactic sugar for the phrase “pip freeze.” It will display a list of all the modules specific to your installation or virtualenv, as well as their version numbers. Unfortunately, it does not wash your dishes or polish your shoes, nor does it display the current version number of any module.

Answered by Bryce

Solution #5

Answered by Johnsyweb

Post is based on