easy_install / pip와 함께 설치된 모든 패키지를 찾으십니까?


답변:


381

pip freeze설치된 패키지 및 해당 버전의 목록을 출력합니다. 또한 나중에 새 환경을 설정하는 데 사용할 수있는 파일에 해당 패키지를 작성할 수 있습니다.

https://pip.pypa.io/en/stable/reference/pip_freeze/#pip-freeze


89
버전 1.3부터 ​​'pip list'가 추가되었습니다. 아래의 답변과 여기에있는 문서를 참조하십시오 : pip-installer.org/en/latest/usage.html#pip-list
keybits

7
다른 형식을 나열하고 고정합니다 (쓰기 시점 기준). 동결 출력은 재 작성 환경에 사용할 수 있습니다 docs.python-guide.org/en/latest/dev/virtualenvs/#other-notes
톰 Saleeba에게

18
pip freezepip list목록의 모든 것을. 에 의해 설치되지 않은 패키지는 제외하지 않습니다 pip.
Eliad

또한 pip freeze스크립트에서 신뢰할 수있는 반면 pip list파이프와 함께 사용하면 예기치 않은 오류가 발생합니다.
데일 앤더슨

2
새로운 (?) pip list -l또는 pip list --local가장 좋은 대답은 stackoverflow.com/a/43012269/491884 @MJB
jmuc

255

pip 1.3 버전부터 사용할 수 있습니다 pip list

오래된 패키지를 표시하는 기능을 포함하여 유용한 옵션이 있습니다. https://pip.pypa.io/en/latest/reference/pip_list/ 설명서는 다음과 같습니다.


3
젠투에서는 pip 이외의 방법으로 설치된 패키지까지 포함하여 모든 패키지가 나열 됩니다 . 질문에 의해 요청 된 다른 시스템에서 비 핍 설치 모듈을 실제로 제외합니까?
jlh

이는 다음과 약간 다릅니다.pip freeze
sg

1
pip list --user사용자가 설치 한 패키지 만 표시하고 시스템 전체 패키지는 제외합니다.
Jacob Hume

138

궁금한 사람이 있다면 'pip show'명령을 사용할 수 있습니다.

pip show [options] <package>

주어진 패키지의 설치 디렉토리가 표시됩니다.


24

데비안이 pip install기본 대상 과 관련하여 최근 우분투 버전처럼 동작한다면 , ( 기본 대상) /usr/local/lib/대신 설치됩니다 . /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747을 확인 하십시오./usr/libapt

나는 ArchLinux 사용자이고 pip를 실험 하면서이 같은 문제를 만났다. 아치에서 해결 한 방법은 다음과 같습니다.

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs pacman -Qo | grep 'No package'

여기서 핵심은 /usr/lib/python2.7/site-packagespip가 YMMV에 설치하는 디렉토리입니다. pacman -Qo얼마나 아치의 PAC의 케이지 남자 파일의 소유권에 대한 어른 확인합니다. No package패키지가 파일을 소유하지 않은 경우 제공하는 리턴의 일부입니다 error: No package owns $FILENAME. 까다로운 해결 방법 : 디렉토리에 관해서는 조금 무지 __init__.py하기 때문에 쿼리하고 있습니다.pacman -Qo

다른 배포판을 위해 pip설치하려면 물건 설치 위치 ( sudo pip install무언가), 파일 소유권을 쿼리하는 방법 (Debian / Ubuntu 방법은 dpkg -S) 및 "패키지가 해당 경로를 소유하지 않습니다"가 무엇인지 반환해야합니다 (Debian / 우분투는 no path found matching pattern)입니다. 데비안 / 우분투 사용자는주의하십시오 : dpkg -S심볼릭 링크를 제공하면 실패합니다. 를 사용하여 먼저 해결하십시오 realpath. 이처럼 :

find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | xargs dpkg -S 2>&1 | grep 'no path found'

Fedora 사용자는 @eddygeek 덕분에 시도해 볼 수 있습니다.

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'

2
+1 Arch one-liner에 대해 대단히 감사합니다. 그것이 바로 제가 찾던 것입니다. 그런데 호기심 많은 사실 : 내 아치 설치는 이탈리아어로 현지화되어 있지만 '패키지 없음'으로 잡았지만 'Nessun pacchetto'(이탈리아어 '패키지 없음')라고 표시된 줄을 grep했습니다. 어떻게 오세요?
Nadir Sampaoli

1
@barraponto @NadirSampaoli grep 내 경우에는 아무것도하지 않습니다. grep은 stdout에서 grep하려고 시도하지만 dpkgstderr에 오류를 쓰므로 redirect를 추가해야합니다 2>&1. 국제 출력의 경우 LANG= 앞에 추가하십시오 xargs dpkg -s. 과 sed) 경로의 패키지 이름을 유지하기 위해, 또한 좋은 도구입니다. 그래서 나는 다음과 같이 끝납니다 :find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | LANG= xargs dpkg -S 2>&1 | grep 'no path found' | sed "s/.*\/\([^\/]*\)\/__init__\.py.*/\1/"
David Boho

1
안녕하세요, 저는 실수로 이것을 다운 투표했고 단지 그것을 깨달았습니다. 이제 내 투표가 잠겨 있습니다. 누군가 내 투표를 무효화하기 위해 이것을 투표 할 수 있습니까? 감사합니다
Jonathan

22

로 시작 :

$ pip list

모든 패키지를 나열합니다. 원하는 패키지를 찾았 으면 다음을 사용하십시오.

$ pip show <package-name>

폴더를 포함하여이 패키지에 대한 세부 정보가 표시됩니다. 패키지 이름을 이미 알고 있다면 첫 번째 부분을 건너 뛸 수 있습니다

클릭 여기에 핍 쇼에 대한 자세한 내용과 여기에 핍 목록에 대한 자세한 내용은.

예:

$ pip show jupyter
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: jupyter@googlegroups.org
License: BSD
Location: /usr/local/lib/python2.7/site-packages
Requires: ipywidgets, nbconvert, notebook, jupyter-console, qtconsole, ipykernel    

최고의 답변 IMHO. 패키지 이름을 알고 있으면 정말 간단하고 빠릅니다. 핍 목록은 필요하지 않으며 고정 시간이 오래 걸릴 수 있으며 관심없는 항목을 필터링해야합니다. 간단 함 : pip show my_packge
ChuckZ

8

pip.get_installed_distributions() 설치된 패키지 목록을 제공합니다

import pip
from os.path import join

for package in pip.get_installed_distributions():
    print(package.location) # you can exclude packages that's in /usr/XXX
    print(join(package.location, package._get_metadata("top_level.txt"))) # root directory of this package

2
더 이상 작동하지 않습니다. github.com/pypa/pip/issues/5243을 참조하십시오 . 대신 다음을 사용해야합니다. import pkg_resources [pkg_resources.working_set에서 d에 대한 print (d.project_name)]
Almenon

6

아래는 약간 느리지 만 잘 알려진 형식의 패키지 목록을 제공합니다 pip. 다시 말해서, 그들 모두가 "pip"에 의해 설치되는 것은 아니지만, 모든 pip에 의해 업그레이드 될 수 있어야합니다.

$ pip search . | egrep -B1 'INSTALLED|LATEST'

속도가 느린 이유는 전체 pypi 저장소의 내용을 나열하기 때문입니다. 비슷한 기능을 제공하지만보다 효율적으로 제안 하는 티켓을 제출했습니다 pip list.

샘플 출력 : (모두에 대해 '.'대신 서브 세트로 검색을 제한했습니다.)

$ pip search selenium | egrep -B1 'INSTALLED|LATEST'

selenium                  - Python bindings for Selenium
  INSTALLED: 2.24.0
  LATEST:    2.25.0
--
robotframework-selenium2library - Web testing library for Robot Framework
  INSTALLED: 1.0.1 (latest)
$

왜 직접 티켓을 제출하지 않습니까?
lajarre

1
분명히 다음 버전의 pip에는 새로운 list 명령이 있습니다 : pip-installer.org/en/latest/usage.html#pip-list
MarkHu

5

@Paul Woolcock의 답변에 추가하면,

pip freeze > requirements.txt

현재 위치의 활성 환경에 설치된 버전 번호와 함께 설치된 모든 패키지 가 포함 된 요구 사항 파일 이 작성 됩니다. 달리는

pip install -r requirements.txt

요구 사항 파일에 지정된 패키지를 설치합니다.


5

최신 버전의 pip에는 pip list -l또는 pip freeze -l( --list) 를 통해 OP가 원하는 것을 수행 할 수 있습니다.
데비안에서는 (적어도) 매뉴얼 페이지는 이것을 명확하게하지 않으며, 기능이 있어야한다는 가정하에-pip list --help .

이 기능이 문서 나 기존 답변에서 명확하지 않다고 제안하는 최근 의견이 있습니다 (일부에서 암시되었지만). 게시해야한다고 생각했습니다. 나는 의견으로 그렇게하고 싶었지만 평판 포인트는 없습니다.


1
우리는 pip freeze --local8 년 동안있었습니다.pip list --localOP도 문제는 가상 환경 ( --local지원)이 아니라 패키지에서 배포 패키지를 식별하는 것에 관한 것 sudo pip install입니다.
Capi Etheriel

4

컴퓨터에 여러 버전의 Python이 설치되어 있으면 각 버전과 관련된 몇 가지 pip 버전이있을 수 있습니다.

연결에 따라 사용하는 pip 명령에 매우 신중해야 할 수도 있습니다.

pip3 list 

Python3.4를 실행하는 곳에서 나를 위해 일했습니다. 단순히를 사용 pip list하여 오류 를 반환했습니다 The program 'pip' is currently not installed. You can install it by typing: sudo apt-get install python-pip.


pip는 python2.7 용, pip3은 python3.x 용
mjp

3

@almenon이 지적했듯이 더 이상 작동하지 않으며 코드에서 패키지 정보를 얻는 지원되는 방법이 아닙니다. 다음은 예외를 발생시킵니다.

import pip
installed_packages = dict([(package.project_name, package.version) 
                           for package in pip.get_installed_distributions()])

이를 위해를 가져올 수 있습니다 pkg_resources. 예를 들면 다음과 같습니다.

import pkg_resources
installed_packages = dict([(package.project_name, package.version)
                           for package in pkg_resources.working_set])

나는 v3.6.5


2

다음은 페도라 또는 다른 rpm 배포판을위한 하나의 라이너입니다 (@barraponto 팁 기반).

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'

더 깨끗한 출력을 얻으려면 이것을 이전 명령에 추가하십시오.

 | sed -r 's:.*/(\w+)/__.*:\1:'


1

pip freeze는 pip / easy_install이 아니더라도 설치된 모든 패키지를 나열합니다. CentOs / Redhat에서 rpm을 통해 설치된 패키지가 있습니다.


1

당신이 사용하는 경우 아나콘다 파이썬 분포를, 당신이 사용할 수있는 conda list어떤 방법으로 설치 한 것을보고 명령을 :

user@pc:~ $ conda list
# packages in environment at /anaconda3:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0            py36h2fc01ae_0
alabaster                 0.7.10           py36h174008c_0
amqp                      2.2.2                     <pip>
anaconda                  5.1.0                    py36_2
anaconda-client           1.6.9                    py36_0

설치 한 항목 pip( pip자체 포함) 을 가져 오려면 :

user@pc:~ $ conda list | grep \<pip
amqp                      2.2.2                     <pip>
astroid                   1.6.2                     <pip>
billiard                  3.5.0.3                   <pip>
blinker                   1.4                       <pip>
ez-setup                  0.9                       <pip>
feedgenerator             1.9                       <pip>

물론 첫 번째 열만 선택하고 싶을 수도 있습니다 ( pip필요한 경우 제외 ).

user@pc:~ $ conda list | awk '$3 ~ /pip/ {if ($1 != "pip") print $1}'
amqp        
astroid
billiard
blinker
ez-setup
feedgenerator 

마지막으로 다음 값을 사용하여이 값을 가져 와서 pip를 모두 제거 할 수 있습니다.

user@pc:~ $ conda list | awk '$3 ~ /pip/ {if ($1 != "pip") print $1}' | xargs pip uninstall -y

삭제 확인을하지 않으 려면에 -y플래그를 사용하십시오 pip uninstall.


1

pip가 설치되지 않은 사람들을 위해 github 에서이 빠른 스크립트를 찾았습니다 (Python 2.7.13에서 작동).

import pkg_resources
distros = pkg_resources.AvailableDistributions()
for key in distros:
  print distros[key]


0

적어도 우분투 (어쩌면 다른 사람들도) 가이 작업을 수행합니다 ( 이 스레드 의 이전 게시물 에서 영감을 얻음 ).

printf "Installed with pip:";
pip list 2>/dev/null | gawk '{print $1;}' | while read; do pip show "${REPLY}" 2>/dev/null | grep 'Location: /usr/local/lib/python2.7/dist-packages' >/dev/null; if (( $? == 0 )); then printf " ${REPLY}"; fi; done; echo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.