Python中有没有办法列出所有已安装的软件包及其版本?
我知道我可以进入python/Lib/site-packages
并查看存在哪些文件和目录,但我觉得这很尴尬。我正在寻找与npm list
类似的内容,即npm-ls。
答案 0 :(得分:175)
如果你有pip安装,并且想要查看安装工具安装了哪些软件包,你可以简单地称之为:
pip freeze
它还将包含已安装软件包的版本号。
<强>更新强>
pip已更新为通过调用:
生成与pip freeze
相同的输出
pip list
注意强>
pip list
的输出格式不同,所以如果你有一些shell脚本解析freeze
的输出(可能是为了获取版本号)并想要更改你的脚本来调用{{ 1}},您需要更改解析代码。
答案 1 :(得分:40)
help('modules')
应该为你做。
在IPython中:
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
答案 2 :(得分:24)
如果你想获得有关已安装的python发行版的信息,并且不想使用你的cmd控制台或终端,而是通过python代码,你可以使用以下代码(使用python 3.4测试):
import pip #needed to use the pip functions
for i in pip.get_installed_distributions(local_only=True):
print(i)
pip.get_installed_distributions(local_only=True)
函数调用返回一个iterable,由于for循环和print函数,迭代中包含的元素以新行字符(\n
)分隔打印出来。
结果将(取决于您安装的发行版)看起来像这样:
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...
答案 3 :(得分:8)
您可以尝试: Yolk
对于安装蛋黄,请尝试:
easy_install yolk
Yolk是一个Python工具,用于获取有关已安装Python的信息 可以在PyPI上使用包和查询包(Python包 索引)。
您可以查看哪些软件包处于活动状态,非活动状态或正在开发中 模式并显示查询可用的新版本 的PyPI。
答案 4 :(得分:7)
来自命令行
python -c help('modules')
可用于查看所有模块和特定模块
python -c help('os')
对于以下Linux将起作用
python -c "help('os')"
答案 5 :(得分:5)
是的!你应该使用pip作为你的python包管理器(http://pypi.python.org/pypi/pip)
使用pip安装包,你可以做一个
pip freeze
它将列出所有已安装的软件包。您可能也应该使用virtualenv和virtualenvwrapper。当你开始一个新项目时,你可以做到
mkvirtualenv my_new_project
然后(在virtualenv内),做
pip install all_your_stuff
这样,您可以workon my_new_project
然后pip freeze
查看为该virtualenv /项目安装了哪些软件包。
例如:
➜ ~ 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)➜ ~
或者如果你有一个带有requirements.pip文件的python包,
mkvirtualenv my_awesome_project
pip install -r requirements.pip
pip freeze
会做的伎俩
答案 6 :(得分:5)
要在更高版本的pip(在pip==10.0.1
上进行测试)中运行此命令,请使用以下命令:
from pip._internal.operations.freeze import freeze
for requirement in freeze(local_only=True):
print(requirement)
答案 7 :(得分:2)
这是使用PYTHONPATH
代替python libs目录的绝对路径的方法:
for d in `echo "${PYTHONPATH}" | tr ':' '\n'`; do ls "${d}"; done
[ 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
....
答案 8 :(得分:1)
答案 9 :(得分:1)
我的看法:
#!/usr/bin/env python3
import pkg_resources
dists = [str(d).replace(" ","==") for d in pkg_resources.working_set]
for i in dists:
print(i)
答案 10 :(得分:0)
如果需要从python内部运行,则可以调用子进程
postDescription
答案 11 :(得分:0)
使用代码,例如检查Hackerrank等中的哪些模块:
import os
os.system("pip list")