[python] 파이썬 사이트 패키지 디렉토리의 위치는 어떻게 찾습니까?

내 사이트 패키지 디렉토리의 위치는 어떻게 찾습니까?



답변

사이트 패키지 디렉토리에는 전역사용자마다 두 가지 유형이 있습니다 .

  1. 글로벌 사이트 패키지 ( ” dist-packages “) 디렉토리는 다음 sys.path을 실행할 때 나열됩니다 .

    python -m site

    보다 간결한 목록을 보려면 Python 코드 getsitepackages사이트 모듈 에서 실행 하십시오 .

    python -c 'import site; print(site.getsitepackages())'

    참고 : virtualenvs의로 getsitepackages를 사용할 수없는 , sys.path하지만, 제대로 VIRTUALENV의 사이트 패키지 디렉토리를 나열합니다 이상에서. Python 3에서는 sysconfig 모듈을 대신 사용할 수 있습니다 .

    python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])'
  2. 사용자 당 사이트 패키지 디렉토리 ( PEP (370)는 파이썬 로컬 패키지를 설치하는 경우)입니다 :

    python -m site --user-site

    이것이 존재하지 않는 디렉토리를 가리키는 경우 Python의 종료 상태를 확인하고 python -m site --help설명을 참조하십시오 .

    힌트 : 사용자 사이트 패키지 마다 설치된 모든 목록을 실행 pip list --user하거나 pip freeze --user제공 합니다.


실용 팁

  • <package>.__path__특정 패키지의 위치를 ​​식별 할 수 있습니다 : ( details )

    $ python -c "import setuptools as _; print(_.__path__)"
    ['/usr/lib/python2.7/dist-packages/setuptools']
  • <module>.__file__특정 모듈의 위치를 ​​식별 할 수 있습니다 : ( 차이점 )

    $ python3 -c "import os as _; print(_.__file__)"
    /usr/lib/python3.6/os.py
  • pip show <package>데비안 스타일 패키지 정보를 보여주기 위해 실행 합니다 :

    $ pip show pytest
    Name: pytest
    Version: 3.8.2
    Summary: pytest: simple powerful testing with Python
    Home-page: https://docs.pytest.org/en/latest/
    Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others
    Author-email: None
    License: MIT license
    Location: /home/peter/.local/lib/python3.4/site-packages
    Requires: more-itertools, atomicwrites, setuptools, attrs, pathlib2, six, py, pluggy

답변

>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

(또는로 첫 번째 항목 site.getsitepackages()[0])


답변

다음과 같은 솔루션 :

  • virtualenv 외부- 글로벌 사이트 패키지 경로 제공
  • virtualenv insidue – virtualenv의 사이트 패키지를 제공 합니다

…이 하나의 라이너입니다.

python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

가독성을 위해 (한 줄짜리로 사용하기보다는) 다음과 같이 표시됩니다.

from distutils.sysconfig import get_python_lib
print(get_python_lib())

출처 : 아주 오래된 버전의 “Django 설치 방법”문서 (Django 설치 이상으로 유용하지만)


답변

우분투의 경우

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

… 정확하지 않습니다.

그것은 당신을 가리킬 것입니다 /usr/lib/pythonX.X/dist-packages

이 폴더에는 프로그램을 실행하기 위해 운영 체제가 자동으로 설치 한 패키지 만 포함됩니다.

우분투 에서 setup_tools \ easy_install \ pip를 통해 설치된 패키지를 포함하는 사이트 패키지 폴더는/usr/local/lib/pythonX.X/dist-packages

유스 케이스가 설치 또는 소스 코드 읽기와 관련된 경우 두 번째 폴더가 더 유용합니다.

Ubuntu를 사용하지 않으면 첫 번째 코드 상자를 터미널에 복사하여 붙여 넣는 것이 안전 할 수 있습니다.


답변

이것이 나를 위해 일한 것입니다.

python -m site --user-site


답변

‘django’패키지를 설치했다고 가정 해 봅시다. 가져 와서 dir (django)을 입력하십시오. 해당 모듈의 모든 기능과 속성이 표시됩니다. 파이썬 인터프리터를 입력하십시오-

>>> import django
>>> dir(django)
['VERSION', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'get_version']
>>> print django.__path__
['/Library/Python/2.6/site-packages/django']

수은을 설치 한 경우에도 같은 작업을 수행 할 수 있습니다.

Snow Leopard를위한 것입니다. 그러나 나는 그것이 일반적으로 작동해야한다고 생각합니다.


답변

다른 사람들이 언급했듯이 distutils.sysconfig관련 설정이 있습니다.

import distutils.sysconfig
print distutils.sysconfig.get_python_lib()

… 기본값 site.py은 조금 더 조잡하지만 아래에서 설명합니다.

import sys, os
print os.sep.join([sys.prefix, 'lib', 'python' + sys.version[:3], 'site-packages'])

(또한 추가 ${sys.prefix}/lib/site-pythonsys.exec_prefix 상수가 다르면 두 경로를 하고 추가합니다 ).

즉, 문맥은 무엇입니까? 당신은 당신의 site-packages직접 엉망해서는 안됩니다 ; setuptools / distutils는 설치를 위해 작동하며, 프로그램이 pythonpath가 완전히 사용자 로컬 인 virtualenv에서 실행 중일 수 있으므로 시스템 사이트 패키지를 직접 사용한다고 가정해서는 안됩니다.