Qual è la differenza tra dist-pacchetti e site-pacchetti?


243

Sono un po 'seccato dal processo di installazione del pacchetto python. In particolare, qual è la differenza tra i pacchetti installati nella directory dist-package e la directory site-pacchetti?

Risposte:


226

dist-pacchetti è una convenzione specifica di Debian che è presente anche nei suoi derivati, come Ubuntu. I moduli sono installati su dist-pacchetti quando provengono dal gestore pacchetti Debian in questa posizione:

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

Poiché easy_installe pipsono installati dal gestore dei pacchetti, usano anche dist-pacchetti, ma inseriscono i pacchetti qui:

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

Dal Debian Python Wiki :

dist-pacchetti invece di site-pacchetti. Il software Python di terze parti installato dai pacchetti Debian va in dist-pacchetti, non in pacchetti del sito. Questo per ridurre i conflitti tra il sistema Python e qualsiasi build Python di origine che potresti installare manualmente.

Ciò significa che se si installa manualmente Python dal sorgente, utilizza la directory dei pacchetti del sito. Ciò consente di mantenere separate le due installazioni, soprattutto perché Debian e Ubuntu si affidano alla versione di sistema di Python per molte utility di sistema.


22
È accurato ?! Installo con pip e va su dist-pacchetti. (su Deb Squeeze + Py 2.6)
Basel Shishani

4
È lo stesso anche per me. I pacchetti installati con pip o easy_install vanno tutti in dist-pacchetti.
monostop,

1
Lo stesso qui, avrei problemi se rimuovo tutte quelle installazioni?
Mohamed Turki,

1
Stesse directory per Debian 6.0.10 (ancora su Python 2.6).
ᴠɪɴᴄᴇɴᴛ

2
Se usi virtualenv con pip, pip installerà i pacchetti nella directory site-pacchetti .
diabloneo,

4

dist-packagesè la directory specifica di debian dove apte gli amici installano le loro cose, ed site-packagesè la pipdirectory standard .

Il problema è: cosa succede quando diverse versioni dello stesso pacchetto sono presenti in directory diverse?

La mia soluzione al problema è creare dist-packagesun collegamento simbolico a 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

(se non si utilizzano gli strumenti gnu, rimuovere l' -vopzione).


1
Sono un po 'confuso quale problema risolvi con la tua soluzione poiché la domanda richiede una spiegazione
Jürgen K.

@ JürgenK .: il problema per me era quale pacchetto veniva utilizzato quando ci sono versioni diverse in directory diverse.
sabato
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.