Was ist das Site-Packages-Verzeichnis von Python?

117

Das Verzeichnis site-packageswird in verschiedenen Python-Artikeln erwähnt. Was ist es? Wie benutzt man es?

Omer Dagan
quelle

Antworten:

72

site-packagesist das Zielverzeichnis von manuell erstellten Python-Paketen. Wenn Sie Python-Pakete aus dem Quellcode erstellen und installieren (unter Verwendung von distutils , wahrscheinlich durch Ausführen python setup.py install), finden Sie die installierten Module site-packagesstandardmäßig in.

Es gibt Standardstandorte:

  • Unix (rein) 1 :prefix/lib/pythonX.Y/site-packages
  • Unix (nicht rein): exec-prefix/lib/pythonX.Y/site-packages
  • Windows: prefix\Lib\site-packages

1 Pure bedeutet, dass das Modul nur Python-Code verwendet. Nicht rein kann auch C / C ++ - Code enthalten.

site-packagesist standardmäßig Teil des Python- Suchpfads , sodass dort installierte Module anschließend problemlos importiert werden können.


Nützliches Lesen

Omer Dagan
quelle
10
Ort war zufällig /usr/local/lib/python3.6/site-packagesauf Ubuntu
Mehmet
Ich habe Gentoo-Systeme damit gesehen lib64!
MultipleMonomials
2
Wird Conda oder Pip in Site-Paketen installiert oder nur manuell erstellte Pakete?
Monica Heddneck
2
Die wirklich interessante Frage ist: Warum dieses Verzeichnis? Warum nicht einfach installieren /usr/lib/python3.6?
Torsten Bronger
39

Wenn Sie die --userOption mit pip verwenden , wird das Paket im Ordner des Benutzers anstelle des globalen Ordners installiert, und Sie müssen den Befehl pip nicht mit Administratorrechten ausführen.

Der Speicherort des Paketordners des Benutzers kann wie folgt ermittelt werden:

python -m site --user-site

Dies wird so etwas wie drucken:

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

Wenn Sie die --userOption nicht mit pip verwenden , wird das Paket in einem globalen Ordner installiert, der wie folgt angegeben ist:

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

Dies wird so etwas wie drucken:

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

Hinweis: Die oben angegebenen Werte gelten für Windows 10 mit Anaconda 4.x, das standardmäßig installiert ist.

Shital Shah
quelle
24

Site-Pakete sind nur der Ort, an dem Python seine Module installiert.

Sie müssen es nicht "finden", Python weiß selbst, wo es zu finden ist. Dieser Speicherort ist immer Teil des PYTHONPATH (sys.path).

Programmatisch können Sie es so finden:

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'

Anthony Perot
quelle
3
Wahrscheinlich einfacher zu importieren site als site.getsitepackages ()
JSharm
1
Nicht alle Python-Distributionen haben site-packages, und dies wird sich erhöhen StopIteration. Zum Beispiel müssen Debian (und Ubuntu) dist-packagesihre verteilten Module installieren.
Mike T
Wenn Sie virtualenv verwenden und keine globalen Pakete erben, funktioniert dies immer. Ich codiere nie ohne eine virtuelle Umgebung
Anthony Perot