어떻게 찾을 수 있습의 위치 내 Python 사이트 패키지는 디렉토리?

StackOverflow https://stackoverflow.com/questions/122327

  •  02-07-2019
  •  | 
  •  

문제

어떻게 찾을 수 있습의 위치는 나이트 패키지는 디렉토리?

도움이 되었습니까?

해결책

의 두 가지 유형이 있 사이트 패키지는 디렉토리 글로벌사용자당.

  1. 글로벌 사이트 패키지를("dist-패키지")에 나와 있는 디렉토리 sys.path 을 실행할 때:

    python -m site
    

    에 대한 간단한 목록 실행 getsitepackages사이트 모듈 Python 에서 코드:

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

    참고: 와 virtualenvs getsitepackages 사용할 수 없, sys.path 에서 위 목록러나 생물 과학과 같은 다른 분야의 사이트 패키지는 디렉토리를 올바르게,하지만.

  2. 사용자당 사이트 패키지는 디렉터리(PEP370 는)는 파이썬를 설치하는 지역 패키지:

    python -m site --user-site
    

    이 포인트 존재하지 않는 디렉토리 체크인 종료 상태의 Python 고 python -m site --help 에 대한 설명이 있습니다.

    힌트: 실행 pip list --userpip freeze --user 게 당신의 목록을 모두 설치 사용자당 사이트 패키지가 있습니다.


실 팁

  • <package>.__path__ 를 식별할 수 있습 location(s)의 특정 패키지:(상세정보)

    $ 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])

"를 설치하는 방법 Django"문서 (그러나 제외할때 유용하다 더 단순한 장고 설치)-실행하여 다음과 같은 쉘에서:

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

읽기 쉬운 형식으로(사용하기보다는 한-라이너),는 다음과 같습니다:

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

우분투,

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

...올바르지 않습니다.

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

이 폴더만 패키지를 포함하는 운영체제 시스템은 자동으로 설치된 프로그램을 실행합니다.

Ubuntu, 사이트 패키지에 포함된 폴더에 설치되는 패키지를 통해 setup_tools\easy_install\pip 것에 /usr/local/lib/pythonX.X/dist-packages

두 번째는 폴더가 아마도 더 유용한 하나의 경우에 사용하는 경우가 관련 설치 또는 읽기 소스 코드입니다.

사용하지 않는 경우에는 우분투에,당신은 아마 안전한 복사본을 붙여넣기의 첫 번째 코드는 상자로 터미널도 있습니다.

이것은 나를 위해 일했:

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

당신 같은 일을 할 수 있습 설치되어 있는 경우 mercurial.

이 있습니다.그러나 내가 생각하는 작동해야에서는 일반적인뿐만 아니라.

distutils.sysconfig 관련 설정:

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

...비록 기본 site.py 가 조금 더 원,의역 below:

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 직;과 함께 진행됩/실행할 필터 작동을 위해 설치하고 프로그램이 실행되고 있습에서러나 생물 과학과 같은 다른 분야의 pythonpath 은 완전히 사용자가 지역,그래서 그것은 없다고 가정 시스템을 사용하는 사이트 패키지를 직접다.

네이티브 패키지 시스템과 함께 설치되는 파이썬 설치에는 데비안 시스템에서 찾을 수 있습니다:

/usr/lib/python2.7 일/dist-키/

에 OSX- /Library/Python/2.7/site-packages

를 사용하여 이 작은 코드:

from distutils.sysconfig import get_python_lib
print get_python_lib()

그러나,패키지 리스트를 통해 설치 pip 에서 찾을 수 있습니다:

/usr/local/bin/

또 하나는 단순히 쓰는 다음과 같은 명령을 모든 경로는 파이썬 패키지.

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

참고:의 위치에 따라 달라질 수 있습니다 OS,에서 같은 OSX

>>> import site; site.getsitepackages()
['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python', '/Library/Python/2.7/site-packages']

모든 답변(또는:같은 대답이 계속 반복되)이 불충분하다.당신이 원하는 다음을 수행해야 합니다.

from setuptools.command.easy_install import easy_install
class easy_install_default(easy_install):
  """ class easy_install had problems with the fist parameter not being
      an instance of Distribution, even though it was. This is due to
      some import-related mess.
      """

  def __init__(self):
    from distutils.dist import Distribution
    dist = Distribution()
    self.distribution = dist
    self.initialize_options()
    self._dry_run = None
    self.verbose = dist.verbose
    self.force = None
    self.help = 0
    self.finalized = 0

e = easy_install_default()
import distutils.errors
try:
  e.finalize_options()
except distutils.errors.DistutilsError:
  pass

print e.install_dir

최종 라인 쇼를 설치 dir.에 작동 우분투하는 반면,위의 그들은하지 않습니다.지에 대해 물어 윈도우 또는 기타 dists 지만,이렇게 정확히 동일한 dir 는 easy_install 사용하는 기본적으로,그것은 아마 올바른 모든 곳에서 easy_install 일(그래서,어디서나,심지어 mac).재미 있습니다.참고:원래 코드는 많은 swearwords 습니다.

측 참고:제안된 솔루션(distutils.sysconfig.get_python_lib())작동하지 않을 때 하나 이상의 사이트 패키지는 디렉터리(로 추천에 의해 이 문서).그것만 반환됩니다 주요 사이트 패키지는 디렉토리에 있습니다.

아아,내가 더 나은 솔루션 중 하나.Python 하지 않는 것을 추적의 사이트 패키지는 디렉토리,그 패키지를 그리고 있습니다.

이 나를 위해 작동 합니다.그것은 당신을 얻을 것이 모두 dist-키 및 사이트 패키지 폴더에 있습니다.는 경우 폴더에 파이의 경로,그것은 없 하는 당신은 많은 어쨌든 좋은.

import sys; 
print [f for f in sys.path if f.endswith('packages')]

출력(우분투를 설치):

['/home/username/.local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages']

추가 주 get_python_lib 능 이미 언급:일부 플랫폼에서 다른 디렉토리에 사용되는 플랫폼은 특정 모듈을(예를 들어:는 모듈을 컴파일이 필요).전달하는 경우 plat_specific=True 을수 있는 사이트용 패키지 플랫폼 특정 패키지가 있습니다.

이 일을 해야에서 모든 배포판에서의 가상 환경 때문에 그것은"저술"자연이다.Os 의 모듈은 항상에 있는 부모 디렉토리의'사이트 패키지'

import os; print(os.path.dirname(os.__file__) + '/site-packages')

을 변경 dir 사이트 패키지 dir 나를 사용하여 다음과 같은 별칭(에*유닉스 시스템):

alias cdsp='cd $(python -c "import os; print(os.path.dirname(os.__file__))"); cd site-packages'
from distutils.sysconfig import get_python_lib
print get_python_lib()

현대 stdlib 방법은 사용 sysconfig 모듈 버전에서 사용할 수 2.7 3.2+.현재 사용하는 파이썬 경로(문서):

  • stdlib:을 포함하는 디렉토리 Python 표준 라이브러리 파일하지 않는 플랫폼에 따라 다릅니다.
  • platstdlib:을 포함하는 디렉토리 Python 표준 라이브러리 파일이 있는 플랫폼에 따라 다릅니다.
  • platlib:디렉토리를 위해 특정 사이트,플랫폼-특정 파일입니다.
  • purelib:디렉토리를 위해 특정 사이트,비-플랫폼-특정 파일입니다.
  • :디렉토리 비-플랫폼-특정 헤더 파일이 있습니다.
  • platinclude:디렉토리를 위해 플랫폼-특정 헤더 파일이 있습니다.
  • 스크립트:디렉토리에 대한 스크립트 파일입니다.
  • 데이터:디렉토리에 대한 데이터 파일이 있습니다.

대부분의 경우,사용자 찾기 이 질문에 관심이 있는'purelib'path(에 어떤 경우, 관심이 있을 수도 있습에'platlib'도).달리 현재 접수 응답,이 방법은 무례한 행동을 하지 않는지 여부에 따라 당신은러나 생물 과학과 같은 다른 분야 활성화됩니다.

시스템 수준에서(이 Python3.7.0mac OS):

>>> import sysconfig
>>> sysconfig.get_paths()['purelib']
'/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'

로 venv,당신이 무언가를 얻는 다음과 같이

>>> import sysconfig                                                                                                                                                
>>> sysconfig.get_paths()['purelib']                                                                                                                                
'/private/tmp/.venv/lib/python3.7/site-packages'

쉘 스크립트를 사용할 수도 있 이러한 세부 사항을 표시할 수 있는 호출에 의해 실행 sysconfig 모듈:

python -m sysconfig

참고: sysconfig ()는 혼동하지 않으로 distutils.sysconfig 서브모듈()에서 언급한 여러 가지 다른답니다 여기에.는 완전히 다른 모듈과 그 부족 get_paths 능합니다.

핍쇼는 제공에 대한 모든 정보 패키지:https://pip.pypa.io/en/stable/reference/pip_show/ [pip 쇼][1]

하는 위치를 얻을:

pip show <package_name>| grep Location

답변된 질문입니다.그러나 사용할만큼이다.

pip install ipython
ipython 
import imaplib
imaplib?

이렇게 다음에 대한 출력이 imaplib 패키지

Type:        module
String form: <module 'imaplib' from '/usr/lib/python2.7/imaplib.py'>
File:        /usr/lib/python2.7/imaplib.py
Docstring:  
IMAP4 client.

Based on RFC 2060.

Public class:           IMAP4
Public variable:        Debug
Public functions:       Internaldate2tuple
                        Int2AP
                        ParseFlags
                        Time2Internaldate

나는 뭔가를 약간 다른 프로젝트를 위해 노력했:찾기 상대 사이트 패키지는 디렉토리에 상대적인 기준 설치합니다.는 경우 사이트 패키지 폴더에 /usr/lib/python2.7/site-packages, 라, /lib/python2.7/site-packages 부분입니다.내가 사실,발생 시스템 site-packages/usr/lib64, 고 받아들이 대답하지 않았 작업에서 그 시스템입니다.

비슷한 사기꾼의 대답은,나의 솔루션 peeks 깊은 용기의 실행할 필터,경로를 찾아내는 실제로 주위에 전달되부 setup.py.그것은 고통이 그 밖으로 나가 원하지 않는 사람이 이제까지 이것을 파악합니다.

import sys
import os
from distutils.command.install import INSTALL_SCHEMES

if os.name == 'nt':
    scheme_key = 'nt'
else:
    scheme_key = 'unix_prefix'

print(INSTALL_SCHEMES[scheme_key]['purelib'].replace('$py_version_short', (str.split(sys.version))[0][0:3]).replace('$base', ''))

해야 하는 인쇄 같은 뭔가 /Lib/site-packages/lib/python3.6/site-packages.

당신이 시도해야하는 명령을 결정하는 핍의 설치 위치

Python2

pip show six | grep "Location:" | cut -d " " -f2

Python 3

pip3 show six | grep "Location:" | cut -d " " -f2

면 이미 추가 PYTHONPATH 수도 있습니다 뭔가

import sys
print('\n'.join(sys.path))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top