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?
Sommaire |
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?
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 ]
http://stackoverflow.com/questions/3220404/why-use-pip-over-easy-install http://stackoverflow.com/questions/3220404/why-use-pip-over-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.
Create a virtual environment
$ 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 && python setup.py 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() /private/tmp
>>> 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.
License : cc by-sa 3.0
http://stackoverflow.com/questions/739993/how-can-i-get-a-list-of-locally-installed-python-modules