Cos'è la directory dei pacchetti del sito di Python?


119

La directory site-packagesè menzionata in vari articoli relativi a Python. Che cos'è? Come usarlo?

Risposte:


72

site-packagesè la directory di destinazione dei pacchetti Python creati manualmente. Quando crei e installi pacchetti Python dai sorgenti (usando distutils , probabilmente eseguendolo python setup.py install), troverai i moduli installati in site-packagesper impostazione predefinita.

Ci sono posizioni standard:

  • Unix (puro) 1 :prefix/lib/pythonX.Y/site-packages
  • Unix (non puro): exec-prefix/lib/pythonX.Y/site-packages
  • Finestre: prefix\Lib\site-packages

1 Pure significa che il modulo utilizza solo codice Python. Non puro può contenere anche codice C / C ++.

site-packagesfa parte per impostazione predefinita del percorso di ricerca di Python , quindi i moduli installati possono essere importati facilmente in seguito.


Lettura utile


10
la posizione era /usr/local/lib/python3.6/site-packagessu Ubuntu
mehmet

Ho visto sistemi Gentoo con esso lib64!
MultipleMonomials

2
conda o pip si installano nei pacchetti del sito o si limitano a creare pacchetti manualmente?
Monica Heddneck

2
La domanda davvero interessante è: perché questa directory? Perché non installare semplicemente su /usr/lib/python3.6?
Torsten Bronger

40

Quando si utilizza l' --useropzione con pip , il pacchetto viene installato nella cartella dell'utente anziché nella cartella globale e non sarà necessario eseguire il comando pip con i privilegi di amministratore.

La posizione della cartella dei pacchetti dell'utente può essere trovata utilizzando:

python -m site --user-site

Questo stamperà qualcosa come:

C:\Users\%USERNAME%\AppData\Roaming\Python\Python35\site-packages

Quando non usi l' --useropzione con pip , il pacchetto viene installato nella cartella globale data da:

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

Questo stamperà qualcosa come:

['C:\\Program Files\\Anaconda3', 'C:\\Program Files\\Anaconda3\\lib\\site-packages'

Nota: i valori stampati sopra sono per Windows 10 con Anaconda 4.x installato con i valori predefiniti.


24

site-packages è solo la posizione in cui Python installa i suoi moduli.

Non c'è bisogno di "trovarlo", python sa dove trovarlo da solo, questa posizione fa sempre parte di PYTHONPATH (sys.path).

A livello di codice puoi trovarlo in questo modo:

import sys
site_packages = next(p for p in sys.path if 'site-packages' in p)
print site_packages

'' /Users/foo/.envs/env1/lib/python2.7/site-packages


3
Probabilmente è più facile importare il sito quindi site.getsitepackages ()
JSharm

1
Non tutte le distribuzioni Python lo hanno site-packages, e questo aumenterà StopIteration. Ad esempio, Debian (e Ubuntu) devono dist-packagesinstallare i loro moduli distribuiti.
Mike T

Se usi virtualenv e non erediti pacchetti globali, funzionerà sempre. Non codifico mai senza virtualenv
Anthony Perot,
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.