source

easy_install/pip과 함께 설치된 모든 패키지를 찾으시겠습니까?

factcode 2022. 9. 28. 00:05
반응형

easy_install/pip과 함께 설치된 모든 패키지를 찾으시겠습니까?

easy_install 또는 pip과 함께 설치된 모든 Python PyPI 패키지를 찾을 수 있는 방법이 있습니까?즉, 배포 툴에 인스톨 되어 있던 것은 모두 제외합니다(이 경우는 Debian에 접속해 주세요).

pip freeze는, 되어 있는 그 합니다.또한 나중에 새 환경을 설정하는 데 사용할 수 있는 파일에 이러한 패키지를 쓸 수도 있습니다.

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

1의 pip에서는, 「1.3」의 pip를 사용할 수 .pip list

오래된 패키지를 표시하는 기능 등 몇 가지 유용한 옵션이 있습니다.여기 매뉴얼이 있습니다.https://pip.pypa.io/en/latest/reference/pip_list/

궁금하신 분은 'pip show' 명령어를 사용하시면 됩니다.

pip show [options] <package>

지정한 패키지의 인스톨 디렉토리가 표시됩니다.

시작:

$ pip list

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

$ pip show <package-name>

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

pip show에 대한 자세한 내용은 여기를, pip 목록에 대한 자세한 내용은 여기를 클릭하십시오.

예제:

$ 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    

이 Debian Ubuntu에 관한 최신 처럼 하는 경우pip install 것은 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」.설치되는 것은/usr/local/lib//usr/lib )apt디폴트 타겟).https://askubuntu.com/questions/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747 를 확인해 주세요.

저는 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-packages YMMV입니다.「 YMMV 」 「 」 「 」 「 」 「 」 「 pip 」입니다pacman -QoArch의 pac kage manager가 파일의 소유권을 확인하는 방법입니다. No package입니다.error: No package owns $FILENAME about i에ying i에yingyingying__init__.pypacman -Qo : (어느 쪽인가 하면)

디스트리뷰터에게 는 '어디서 하는지', '어디서 하는지', '어디서 하는지'를 합니다.pipstople ( 「」만)sudo pip install방법(는 Debian/Ubuntu입니다).dpkg -Spath return는 "no package owers that path" 반환(Debian/Ubuntu))은no path found matching pattern ) Debian/Ubuntu 사용자 주의: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 사용자는 다음을 시도할 수 있습니다(고맙습니다 @eddygek).

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

에서는 "pip"을 통해 것을 할 수 .pip list -l ★★★★★★★★★★★★★★★★★」pip freeze -l )--list를 참조해 주세요.
하게 하고 않고,는 그 debian man page와 함께 을 발견했을 이다.그리고 저는 그 기능이 반드시 존재해야 한다는 가정 하에 그것을 발견했을 뿐입니다.pip list --help.

이 기능은 문서에서도 기존의 답변에서도 명확하지 않다고 하는 코멘트가 최근 있기 때문에(일부에서는 암시하고 있지만) 투고해야겠다고 생각했습니다.코멘트로 하고 싶었지만, 저는 평판 포인트가 없습니다.

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

아래는 조금 느리지만, 이 패키지의 포맷된 목록은 다음과 같습니다.pip고고있있있있다다 모든 이 "의해 설치된 것은 "pip"에 될 수 합니다.

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

속도가 느린 이유는 전체 pypi repo의 내용을 나열하기 때문입니다.내가 제안할 표를 제출했어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)
$

@Paul Woolcock의 대답에 덧붙여,

pip freeze > requirements.txt

그럼 현재 위치에 활성 환경에 설치된 버전 번호와 함께 설치된 모든 패키지가 포함된 요건 파일이 생성됩니다.입니다.

pip install -r requirements.txt

는 요건 파일에 지정된 패키지를 설치합니다.

컴퓨터에 여러 버전의 Python이 설치되어 있는 경우 각각에 몇 가지 버전의 pip이 연결되어 있을 수 있습니다.

어소시에이션에 따라서는, 사용하는 pip 커맨드에 매우 주의할 필요가 있습니다.

pip3 list 

Python 3.4 python python python python python python python 。 「」를 사용하는 만으로,pip list되었습니다.The program 'pip' is currently not installed. You can install it by typing: sudo apt-get install python-pip

@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

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

다음은 중절모 또는 기타 rpm 디스트로용 원라이너입니다(@baraponto 팁 기준).

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:'

모든 파일/폴더 이름 가져오기site-packages/(그리고dist-packages/패키지 매니저를 사용하여 패키지를 통해 설치된 패키지를 제거합니다.

Anaconda python 배포를 사용하는 경우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 uninstall 할 수 있습니다.

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

「 」의 .-ypip uninstall삭제 확인을 할 필요가 없습니다.

pip을 설치하지 않은 사용자를 위해 github에서 다음과 같은 빠른 스크립트를 찾았습니다(Python 2.7.13과 연동).

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

pip list [ options ]여기서 자세한 레퍼런스를 참조해 주세요.

적어도 Ubuntu(아마도 다른 회사)의 경우, (이 스레드의 이전 투고에서 영감을 얻은) 다음과 같이 동작합니다.

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

언급URL : https://stackoverflow.com/questions/6600878/find-all-packages-installed-with-easy-install-pip

반응형