Python'un site paketleri dizini nedir?


119

Dizin site-packages, Python ile ilgili çeşitli makalelerde belirtilmiştir. Bu ne? Bu nasıl kullanılır?

Yanıtlar:


72

site-packagesolan hedef dizin elle inşa Python paketleri. Python paketlerini kaynaktan oluşturup kurduğunuzda ( dağıtımları kullanarak , muhtemelen çalıştırarak python setup.py install), kurulu modülleri site-packagesvarsayılan olarak bulacaksınız .

Standart yerler vardır:

  • Unix (saf) 1 :prefix/lib/pythonX.Y/site-packages
  • Unix (saf olmayan): exec-prefix/lib/pythonX.Y/site-packages
  • Pencereler: prefix\Lib\site-packages

1 Pure , modülün yalnızca Python kodunu kullandığı anlamına gelir. Saf olmayan , C / C ++ kodunu da içerebilir.

site-packagesvarsayılan olarak Python arama yolunun bir parçasıdır , bu nedenle orada kurulan modüller daha sonra kolayca içe aktarılabilir.


Faydalı okuma


10
konum /usr/local/lib/python3.6/site-packagesubuntu'da oldu
mehmet

İçinde Gentoo sistemlerini gördüm lib64!
MultipleMonomials

2
conda veya pip site paketlerine mi kurulur, yoksa paketleri sadece manuel olarak mı oluşturur?
Monica Heddneck

2
Gerçekten ilginç soru şudur: Neden bu dizin? Neden sadece yükleme yapmıyorsunuz /usr/lib/python3.6?
Torsten Bronger

40

--userPip ile seçeneği kullandığınızda , paket genel klasör yerine kullanıcının klasörüne yüklenir ve yönetici ayrıcalıklarıyla pip komutunu çalıştırmanız gerekmez.

Kullanıcının paketler klasörünün konumu şu şekilde bulunabilir:

python -m site --user-site

Bu, aşağıdaki gibi bir şey yazdıracaktır:

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

--userPip ile seçeneği kullanmadığınızda , paket şu şekilde verilen genel klasöre yüklenir:

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

Bu, aşağıdaki gibi bir şey yazdıracaktır:

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

Not: Yukarıdaki yazdırılan değerler, varsayılan olarak yüklenmiş Anaconda 4.x ile Windows 10 için geçerlidir.


24

site paketleri, Python'un modüllerini kurduğu konumdur.

"Bulmaya" gerek yok, python kendi başına nerede bulacağını bilir, bu konum her zaman PYTHONPATH'ın (sys.path) bir parçasıdır.

Programlı olarak şu şekilde bulabilirsiniz:

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
Muhtemelen siteyi içe aktarmak daha sonra site.getsitepackages ()
JSharm

1
Tüm Python dağıtımlarında yoktur site-packagesve bu artacaktır StopIteration. Örneğin, Debian (ve Ubuntu) dist-packagesdağıtılmış modüllerini kurmalıdır.
Mike T

Eğer virtualenv kullanıyorsanız ve global paketleri devralmıyorsanız, bu her zaman işe yarayacaktır. Virtualenv olmadan asla kod yazmam
Anthony Perot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.