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

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



답변

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 디렉토리가 사용됩니다. 이것은 데비안과 우분투가 많은 시스템 유틸리티를 위해 파이썬의 시스템 버전에 의존하기 때문에 두 설치를 별도로 유지할 수 있습니다.


답변

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옵션을 제거하십시오 .


답변