I would like to get a list of Python modules, which are in my Python installation (UNIX server).
How can you get a list of Python modules installed in your computer?
To see all modules installed on the system, use the Get-Module -ListAvailable command.
You can go to the python prompt by running python3. 6 command as you can see below. Then you can run help("modules") to list all the installed python modules. If you do not have python3 installed then you can use yum install python3 -y command to install on RHEL/CentOS Based Servers and sudo apt-get install python3.
Locally installed Python and all packages will be installed under a directory similar to ~/. local/bin/ for a Unix-based system, or \Users\Username\AppData\Local\Programs\ for Windows.
help('modules')
in a Python shell/prompt.
My 50 cents for getting a pip freeze
-like list from a Python script:
import pip installed_packages = pip.get_installed_distributions() installed_packages_list = sorted(["%s==%s" % (i.key, i.version) for i in installed_packages]) print(installed_packages_list)
As a (too long) one liner:
sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
Giving:
['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', 'werkzeug==0.9.4']
This solution applies to the system scope or to a virtual environment scope, and covers packages installed by setuptools
, pip
and (god forbid) easy_install
.
I added the result of this call to my flask server, so when I call it with http://example.com/exampleServer/environment
I get the list of packages installed on the server's virtualenv. It makes debugging a whole lot easier.
I have noticed a strange behaviour of this technique - when the Python interpreter is invoked in the same directory as a setup.py
file, it does not list the package installed by setup.py
.
$ cd /tmp $ virtualenv test_env New python executable in test_env/bin/python Installing setuptools, pip...done. $ source test_env/bin/activate (test_env) $
Clone a git repo with setup.py
(test_env) $ git clone https://github.com/behave/behave.git 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.
We have behave's setup.py
in /tmp/behave
:
(test_env) $ ls /tmp/behave/setup.py /tmp/behave/setup.py
Install the python package from the git repo (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
/tmp
>>> 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() '/private/tmp'
/tmp/behave
>>> 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() '/private/tmp/behave'
behave==1.2.5a1
is missing from the second example, because the working directory contains behave
's setup.py
file.
I could not find any reference to this issue in the documentation. Perhaps I shall open a bug for it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With