내 사이트 패키지 디렉토리의 위치는 어떻게 찾습니까?
답변
사이트 패키지 디렉토리에는 전역 및 사용자마다 두 가지 유형이 있습니다 .
-
글로벌 사이트 패키지 ( ” 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"])'
-
사용자 당 사이트 패키지 디렉토리 ( 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-python
sys.exec_prefix
상수가 다르면 두 경로를 하고 추가합니다 ).
즉, 문맥은 무엇입니까? 당신은 당신의 site-packages
직접 엉망해서는 안됩니다 ; setuptools / distutils는 설치를 위해 작동하며, 프로그램이 pythonpath가 완전히 사용자 로컬 인 virtualenv에서 실행 중일 수 있으므로 시스템 사이트 패키지를 직접 사용한다고 가정해서는 안됩니다.
