설치된 패키지와 버전을 모두 파이썬으로 나열하는 방법은 무엇입니까?


128

파이썬에서 설치된 모든 패키지와 버전을 나열하는 방법이 있습니까?

나는 안으로 들어가서 python/Lib/site-packages어떤 파일과 디렉토리가 있는지 알 수 있지만 이것이 매우 어색하다는 것을 알았습니다. 내가 찾고있는 것은 npm listie npm-ls 와 비슷한 것입니다 .


답변:


196

pip가 설치되어 있고 설치 프로그램 도구와 함께 설치된 패키지를 보려면 간단히 다음을 호출하면됩니다.

pip freeze

설치된 패키지의 버전 번호도 포함됩니다.

최신 정보

pip는 pip freeze다음을 호출 하여와 동일한 출력을 생성하도록 업데이트되었습니다 .

pip list

노트

의 출력 pip list형식이 다르므로 출력을 구문 분석하는 일부 셸 스크립트 (버전 번호를 잡을 수 있음)가 freeze있고를 호출하도록 스크립트 list를 변경하려면 구문 분석 코드를 변경해야합니다.


9
IMHO는 pip list에 대한 별칭으로 제공해야합니다 pip freeze. 쓰기는 직관적 pip freeze > requirements.txt이지만 그렇지 않습니다 pip freeze.
jsalonen

3
WOW : 그냥 핍의 최신 버전의 문서로보고하고 추가 한 것 같아 pip list: pip-installer.org/en/latest/usage.html#pip-list -이 실제로 이미오고 뭔가가 있습니다!
jsalonen

51

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

5
편리합니다! 그래도 버전을보고 싶습니다.
jsalonen

4
나는 문제가 ... 아니 버전 등의 방법 표준화 프로그래머 생각 때로는 Package.version()또는 package.__version__또는 package.ver또는 다른 가능성의 수
Joran 비즐리

나는 파이썬 모토가 "할 수있는 유일한 방법"이라고 생각했다;)?
Ed Randall

3
@EdRandall, 아니오- "한 가지 확실한 방법"입니다. 항상 명백한 방법이 있습니다. 또한 정확한 표현은 다음과 같습니다. 한 가지 분명한 방법이 있어야합니다. 네덜란드 인이 아니라면 처음에는 그 방법이 명확하지 않을 수 있습니다.
rosuav

30

설치된 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)함수 호출은 반복 가능한 복귀하고 있기 때문에 피 루프 인쇄 기능에 포함되는 요소의 반복 가능한 새 광고 자에 의해 분리 된 인쇄된다 ( \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...

4
@exhuma의 의견을 확장하려면 pip 10으로 다음을 사용해야합니다. import pkg_resources [pkg_resources.working_set의 d에 대한 print (d.project_name)]
Almenon

상태는 pkg_resources어떻습니까? AFAICR 이것은의 일부입니다 setuptools. 아닙니다 pip. 에 따라서 만 항상 사용할 수 있다고 안전하게 가정 할 수 있습니까 ? setuptoolspip
exhuma

9

당신은 시도 할 수 있습니다 : 노른자

노른자를 설치하려면 다음을 시도하십시오.

easy_install yolk

Yolk는 설치된 Python 패키지에 대한 정보를 얻고 PyPI (Python Package Index)에서 사용할 수있는 패키지를 쿼리하기위한 Python 도구입니다.

활성, 비활성 또는 개발 모드에있는 패키지를 확인하고 PyPI를 쿼리하여 사용할 수있는 최신 버전을 보여줍니다.


나는 보통이 시점 에서이 작업에 pip를 사용하지만 배포를 추가 할 준비가되지 않은 아주 오래된 프로젝트가 있으며 거기에 이와 같은 도구가 있다는 것을 기억했습니다. 비록 그것이 무엇이라고했는지 기억할 수 없었다. .. 이것이었다!
meshantz

1
파이썬 3을 지원하지 않습니다 (파이에서 설치하고 런타임 오류가 발생했습니다)
Ohad Cohen

9

이후 버전의 pip (에서 테스트 pip==10.0.1) 에서 이것을 실행하려면 다음을 사용하십시오.

from pip._internal.operations.freeze import freeze
for requirement in freeze(local_only=True):
    print(requirement)

내부pydoc pip._internalhelp(pip._internal) 상태는 어떻 습니까? 내가 볼 수 있지만 아래에 도달하지 못할 핍 .__ builtins_, 등 핍 참조 가이드는 비어 있습니다.
MortenB

1
불행히도 나는 모른다. 나는 그것이 호출되는 것을 좋아하지 않습니다 _internal. 기능이 공식적으로 노출되지 않은 것 같습니다. 따라서 조심해서 다루어야합니다!
exhuma

8

명령 줄에서

python -c help('modules')

모든 모듈을 보거나 특정 모듈을 볼 수 있습니다.

python -c help('os')

리눅스의 경우 아래에서 작동합니다

python -c "help('os')"

5
이것은 Windows에서 작동합니다. 리눅스에서는 오류가 발생합니다 :-bash: syntax error near unexpected token `('
AjayKumarBasuthkar

이것은 모듈 버전을 제공하지 않습니다
Stepan Yakovenko

5

예! pip를 파이썬 패키지 관리자로 사용해야합니다 ( http://pypi.python.org/pypi/pip )

pip가 설치된 패키지를 사용하면

pip freeze

설치된 모든 패키지가 나열됩니다. 또한 virtualenvvirtualenvwrapper 도 사용해야합니다 . 새 프로젝트를 시작할 때 할 수있는 일

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

트릭을 할 것입니다


네, 실제로 virtualenv를 사용하고 있습니다. 나는 pip이 방법으로 그것을 함께 사용할 수 있는지 어떻게 알지 못했는지 모른다 !
jsalonen

정보 virtualenv글로벌 사이트 패키지, 당신은 그 사용이 필요 pip list --local.
Ioannis Filippidis

@johntex 글로벌 사이트 패키지를 사용해서는 안됩니다!
Andbdrew

글로벌 사이트 패키지를 사용하면 매우 유용합니다. 그렇지 않은 경우에는 옵션이 전혀 존재하지 않습니다 virtualenv. 나는 그것들을 사용하지 않는 이유를 알지 못하며, virtualenv원하는 경우 아무도 당신을 고립으로 제한하지 못하게 합니다.
Ioannis Filippidis

앱이나 프로그램을 배포하거나 배포 할 때 다른 사람 / 서버에 글로벌 사이트 패키지가 없기 때문에이를 사용하지 않는 한 가지 큰 이유가 있습니다. 당신이 응용 프로그램을 사용하는 유일한 사람이라면 원하는대로하십시오.
Andbdrew

5

나의 테이크 :

#!/usr/bin/env python3

import pkg_resources

dists = [str(d).replace(" ","==") for d in pkg_resources.working_set]
for i in dists:
    print(i)

2

PYTHONPATH파이썬 라이브러리 디렉토리의 절대 경로 대신에 사용하는 방법 이 있습니다.

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
....


1

이것이 파이썬 내에서 실행되어야하는 경우 하위 프로세스를 호출 할 수 있습니다

from subprocess import PIPE, Popen

pip_process = Popen(["pip freeze"], stdout=PIPE,
                   stderr=PIPE, shell=True)
stdout, stderr = pip_process.communicate()
print(stdout.decode("utf-8"))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.