dist-packages와 site-packages의 차이점은 무엇입니까?


243

파이썬 패키지 설치 프로세스에 약간 혼란스러워합니다. 특히 dist-packages 디렉토리에 설치된 패키지와 site-packages 디렉토리의 차이점은 무엇입니까?

답변:


226

dist-packages는 데비안 고유의 규칙으로 우분투와 같은 파생어에도 있습니다. 모듈은 데비안 패키지 관리자에서 다음 위치로 dist 패키지에 설치됩니다 :

/usr/lib/python2.7/dist-packages

easy_install그리고 pip패키지 관리자에서 설치 되기 때문에 dist-package도 사용하지만 패키지를 여기에 넣습니다.

/usr/local/lib/python2.7/dist-packages

로부터 데비안 파이썬 위키 :

사이트 패키지 대신 dist 패키지. 데비안 패키지에서 설치된 타사 Python 소프트웨어는 사이트 패키지가 아닌 dist 패키지로 들어갑니다. 이것은 시스템 Python과 수동으로 설치할 수있는 소스 소스 Python 빌드 간의 충돌을 줄입니다.

즉, 소스에서 Python을 수동으로 설치하면 site-packages 디렉토리가 사용됩니다. 이것은 데비안과 우분투가 많은 시스템 유틸리티를 위해 파이썬의 시스템 버전에 의존하기 때문에 두 설치를 별도로 유지할 수 있습니다.


22
이것이 정확합니까?! pip로 설치하면 dist-packages로 이동합니다. (Deb Squeeze + Py 2.6에서)
Basel Shishani

4
나도 마찬가지입니다. pip 또는 easy_install과 함께 설치된 패키지는 모두 dist-packages에 들어갑니다.
monostop

1
여기서도 마찬가지입니다. 설치를 모두 제거하면 문제가 있습니까?
Mohamed Turki

1
데비안 6.0.10과 같은 디렉토리 (여전히 파이썬 2.6).
ᴠɪɴᴄᴇɴᴛ

2
pip와 함께 virtualenv를 사용하면 pip는 site-packages 디렉토리에 패키지를 설치합니다 .
diabloneo 2016 년

4

dist-packagesapt그리고 친구가 물건을 설치 하는 데비안 특정 디렉토리이며 site-packages표준 pip디렉토리입니다.

문제는-같은 패키지의 다른 버전이 다른 디렉토리에있을 때 어떻게됩니까?

문제에 대한 나의 해결책은 다음과 dist-packages의 심볼릭 링크를 만드는 것입니다 site-packages.

for d in $(find $WORKON_HOME -type d -name dist-packages); do
  pushd $d
  cd ..
  if test -d dist-packages/__pycache__; then
    mv -v dist-packages/__pycache__/* site-packages/__pycache__/
    rmdir -v dist-packages/__pycache__
  fi
  mv -v dist-packages/* site-packages/
  rmdir -v dist-packages
  ln -sv site-packages dist-packages
  popd
done

gnu 도구를 사용하지 않는 경우 -v옵션을 제거하십시오 .


1
질문에 대한 설명이 필요하기 때문에 솔루션으로 해결할 문제가 약간 혼동됩니다.
Jürgen K.

@ JürgenK. : 문제는 다른 디렉토리에 다른 버전이있을 때 어떤 패키지가 사용되는지였습니다.
sds
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.