как перечислить все установленные пакеты и их версии в python?

<p>есть ли способ в python перечислить все установленные пакеты и их версии?</p><p>я знаю, что могу зайти внутрь <code>python/lib/site-packages</code> и посмотреть, какие файлы и каталоги существуют, но я нахожу это очень неловким. что я ищу что-то похожее на <code>npm list</code> т.е. <a href="https://docs.npmjs.com/cli/ls">npm-ls</a> .</p>

<p>если у вас есть pip install и вы хотите увидеть, какие пакеты были установлены с вашими инструментами установки, вы можете просто вызвать это:</p><pre><code>pip freeze </code></pre><p>он также будет включать номера версий для установленных пакетов.</p><p><strong> обновление </strong></p><p>pip был обновлен и теперь производит тот же вывод, что и <code>pip freeze</code>, вызывая:</p><pre><code>pip list </code></pre><p><strong> заметка </strong></p><p>выходные данные из <code>pip list</code> отформатированы по-разному, поэтому, если у вас есть какой-то сценарий shell, который анализирует выходные данные (возможно, чтобы получить номер версии) <code>freeze</code> и хотите изменить свой сценарий на вызов <code>list</code>, вам потребуется изменить код синтаксического анализа.</p>

<p><code>help('modules')</code> должен сделать это за вас.</p><p>в ipython:</p><pre><code>in [1]: import #import press-tab display all 631 possibilities? (y or n) ansi audiodev markupbase apturl audioop markupsafe argimageplugin avahi marshal basehttpserver axi math bastion base64 md5 bdffontfile bdb mhlib bmpimageplugin binascii mimetools bufrstubimageplugin binhex mimetypes cddb bisect mimify cdrom bonobo mmap cgihttpserver brlapi mmkeys canvas bsddb modulefinder commandnotfound butterfly multifile configparser bz2 multiprocessing containerio cpickle musicbrainz2 cookie cprofile mutagen crypto cstringio mutex curimageplugin cairo mx dlfcn calendar netrc dcximageplugin cdrom new dialog cgi nis discid cgitb nntplib distupgrade checkbox ntpath </code></pre>

<p>если вы хотите получить информацию об установленных дистрибутивах python и не хотите использовать для этого консоль или терминал cmd, а использовать код python, вы можете использовать следующий код (протестирован с python 3.4):</p><pre><code>import pip #needed to use the pip functions for i in pip.get\_installed\_distributions(local\_only=true): print(i) </code></pre><p>вызов функции <code>pip.get\_installed\_distributions(local\_only=true)</code> возвращает итеративный элемент, и из-за цикла for и функции print элементы, содержащиеся в итерируемом элементе, распечатываются через символы новой строки (<code>\n</code>) . результат будет (в зависимости от установленных дистрибутивов) выглядеть примерно так:</p><pre><code>cycler 0.9.0 decorator 4.0.4 ipykernel 4.1.0 ipython 4.0.0 ipython-genutils 0.1.0 ipywidgets 4.0.3 jinja2 2.8 jsonschema 2.5.1 jupyter 1.0.0 jupyter-client 4.1.1 #... and so on... </code></pre>

<p>вы можете попробовать:<strong> желток </strong></p><p>для установки желток попробуйте:</p><pre><code>easy\_install yolk </code></pre><blockquote> <p>yolk - это инструмент python для получения информации об установленном python пакеты и пакеты запросов доступны в pypi (python package index).</p> <p>вы можете увидеть, какие пакеты активны, неактивны или находятся в разработке режим и покажет вам, какие более новые версии доступны путем запроса pypi.</p> </blockquote>

<p>из командной строки </p><pre><code>python -c help('modules') </code></pre><p>может быть использован для просмотра всех модулей, а также для конкретных модулей</p><pre><code>python -c help('os') </code></pre><p>для linux ниже будет работать</p><pre><code>python -c "help('os')" </code></pre>

<p>да! вы должны использовать pip в качестве менеджера пакетов python ( <a href="http://pypi.python.org/pypi/pip">http://pypi.python.org/pypi/pip</a> )</p><p>с установленными пакетами pip, вы можете сделать </p><pre><code>pip freeze </code></pre><p>и он перечислит все установленные пакеты. вы, вероятно, также должны использовать <a href="http://pypi.python.org/pypi/virtualenv">virtualenv</a> и <a href="http://pypi.python.org/pypi/virtualenvwrapper">virtualenvwrapper</a> . когда вы начинаете новый проект, вы можете сделать </p><pre><code>mkvirtualenv my\_new\_project </code></pre><p>а затем (внутри этого virtualenv) сделать</p><pre><code>pip install all\_your\_stuff </code></pre><p>таким образом, вы можете <code>workon my\_new\_project</code>, а затем <code>pip freeze</code>, чтобы увидеть, какие пакеты установлены для этого virtualenv/project. </p><p>например:</p><pre><code>➜ ~ mkvirtualenv yo\_dude new python executable in yo\_dude/bin/python installing setuptools............done. installing pip...............done. virtualenvwrapper.user\_scripts creating /users/aaylward/dev/virtualenvs/yo\_dude/bin/predeactivate virtualenvwrapper.user\_scripts creating /users/aaylward/dev/virtualenvs/yo\_dude/bin/postdeactivate virtualenvwrapper.user\_scripts creating /users/aaylward/dev/virtualenvs/yo\_dude/bin/preactivate virtualenvwrapper.user\_scripts creating /users/aaylward/dev/virtualenvs/yo\_dude/bin/postactivate virtualenvwrapper.user\_scripts creating /users/aaylward/dev/virtualenvs/yo\_dude/bin/get\_env\_details (yo\_dude)➜ ~ pip install django downloading/unpacking django downloading django-1.4.1.tar.gz (7.7mb): 7.7mb downloaded running setup.py egg\_info for package django installing collected packages: django running setup.py install for django changing mode of build/scripts-2.7/django-admin.py from 644 to 755 changing mode of /users/aaylward/dev/virtualenvs/yo\_dude/bin/django-admin.py to 755 successfully installed django cleaning up... (yo\_dude)➜ ~ pip freeze django==1.4.1 wsgiref==0.1.2 (yo\_dude)➜ ~ </code></pre><p>или если у вас есть пакет python с файлом require.pip,</p><pre><code>mkvirtualenv my\_awesome\_project pip install -r requirements.pip pip freeze </code></pre><p>сделает свое дело</p>

<p>для запуска этого в более поздних версиях pip (протестировано на <code>pip==10.0.1</code>) используйте следующее:</p><pre><code>from pip.\_internal.operations.freeze import freeze for requirement in freeze(local\_only=true): print(requirement) </code></pre>

<p>вот способ сделать это, используя <code>pythonpath</code> вместо абсолютного пути к вашей папке python libs dir:</p><pre><code>for d in `echo "${pythonpath}" | tr ':' 'n'; do ls "${d}"; done </code></pre><hr><pre><code>[ 10:43 jonathan@macbookpro-2 ~/xcode/projects/python for ios/trunk/python for ios/python for ios ]$ for d in echo "$pythonpath" | tr ':' '\n'`; do ls "${d}"; done libpython2.7.dylib pkgconfig python2.7 basehttpserver.py \_pyio.pyc cgitb.pyo doctest.pyo htmlentitydefs.pyc mimetools.pyc plat-mac runpy.py stringold.pyc traceback.pyo basehttpserver.pyc \_pyio.pyo chunk.py dumbdbm.py htmlentitydefs.pyo mimetools.pyo platform.py runpy.pyc stringold.pyo tty.py basehttpserver.pyo \_strptime.py chunk.pyc dumbdbm.pyc htmllib.py mimetypes.py platform.pyc runpy.pyo stringprep.py tty.pyc bastion.py \_strptime.pyc chunk.pyo dumbdbm.pyo htmllib.pyc mimetypes.pyc platform.pyo sched.py stringprep.pyc tty.pyo bastion.pyc \_strptime.pyo cmd.py .... </code></pre>

<p>мой дубль:</p><pre><code>#!/usr/bin/env python3 import pkg\_resources dists = [str(d).replace(" ","==") for d in pkg\_resources.working\_set] for i in dists: print(i) </code></pre>

<p>если вы используете анаконду:</p><pre><code>conda list </code></pre><p>сделаю это! смотрите: <a href="https://conda.io/docs/\_downloads/conda-cheatsheet.pdf">https://conda.io/docs/\_downloads/conda-cheatsheet.pdf</a> </p>