wake-up-neo.com

Was ist der Unterschied zwischen dist-packages und site-packages?

Der Installationsprozess für das Python-Paket hat mich etwas gestört. Was ist der Unterschied zwischen Paketen, die im Verzeichnis dist-packages installiert sind, und dem Verzeichnis site-packages?

213
maxm

dist-packages ist eine Debian-spezifische Konvention, die ebenso wie Ubuntu in ihren Derivaten enthalten ist. Module werden in dist-packages installiert, wenn sie vom Debian-Paketmanager an diesen Speicherort kommen:

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

Da easy_install und pip vom Paketmanager installiert werden, verwenden sie auch dist-packages, setzen jedoch Pakete hier:

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

Aus dem Debian Python Wiki :

dist-packages statt site-packages. Python-Software von Drittanbietern Die Installation von Debian-Paketen geht in dist-packages, nicht in Site-Pakete. Dies dient dazu, Konflikte zwischen dem System Python, .__ zu reduzieren. und alle Python-Builds aus Quellen, die Sie manuell installieren können.

Das heißt, wenn Sie Python manuell von der Quelle installieren, wird das Verzeichnis site-packages verwendet. Dadurch können Sie die beiden Installationen voneinander trennen, zumal sich Debian und Ubuntu für viele Systemprogramme auf die Systemversion von Python verlassen.

201
jterrace

Meine Lösung für das Problem ist, dist-packages einen Symlink zu site-packages zu machen:

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

(Wenn Sie keine gnu-Tools verwenden, entfernen Sie die Option -v).

0
sds