Apa itu direktori paket situs python?


119

Direktori site-packagestersebut disebutkan dalam berbagai artikel terkait Python. Apa itu? Bagaimana cara menggunakannya?

Jawaban:


72

site-packagesadalah direktori target paket Python yang dibuat secara manual. Saat Anda membangun dan menginstal paket Python dari sumber (menggunakan distutils , mungkin dengan mengeksekusi python setup.py install), Anda akan menemukan modul yang diinstal site-packagessecara default.

Ada lokasi standar:

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

1 Pure artinya modul hanya menggunakan kode Python. Tidak murni dapat berisi kode C / C ++.

site-packagessecara default merupakan bagian dari jalur pencarian Python , sehingga modul yang diinstal di sana dapat diimpor dengan mudah setelahnya.


Bacaan yang berguna


10
lokasi kebetulan berada /usr/local/lib/python3.6/site-packagesdi ubuntu
mehmet

Saya telah melihat sistem Gentoo dengan ini lib64!
MultipleMonomials

2
apakah conda atau pip diinstal ke dalam paket situs, atau hanya paket yang dibuat secara manual?
Monica Heddneck

2
Pertanyaan yang sangat menarik adalah: Mengapa direktori ini? Mengapa tidak menginstal saja /usr/lib/python3.6?
Torsten Bronger

40

Saat Anda menggunakan --useropsi dengan pip , paket akan diinstal di folder pengguna, bukan di folder global, dan Anda tidak perlu menjalankan perintah pip dengan hak istimewa admin.

Lokasi folder paket pengguna dapat ditemukan menggunakan:

python -m site --user-site

Ini akan mencetak sesuatu seperti:

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

Jika Anda tidak menggunakan --useropsi dengan pip , paket akan diinstal di folder global yang diberikan oleh:

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

Ini akan mencetak sesuatu seperti:

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

Catatan: Nilai yang dicetak di atas adalah untuk Di Windows 10 dengan Anaconda 4.x diinstal dengan default.


24

paket situs hanyalah lokasi tempat Python menginstal modulnya.

Tidak perlu "menemukannya", python tahu di mana menemukannya dengan sendirinya, lokasi ini selalu menjadi bagian dari PYTHONPATH (sys.path).

Secara terprogram Anda dapat menemukannya dengan cara ini:

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
Mungkin lebih mudah untuk mengimpor situs daripada site.getsitepackages ()
JSharm

1
Tidak semua distribusi Python memilikinya site-packages, dan ini akan meningkat StopIteration. Misalnya, Debian (dan Ubuntu) harus dist-packagesmenginstal modul terdistribusi mereka.
Mike T

Jika Anda menggunakan virtualenv dan tidak mewarisi paket global maka ini akan selalu berfungsi. Saya tidak pernah membuat kode tanpa virtualenv
Anthony Perot
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.