Pythonのsite-packagesディレクトリとは何ですか?


119

ディレクトリsite-packagesは、Python関連のさまざまな記事で言及されています。それは何ですか?どうやって使うのですか?

回答:


72

site-packages手動でビルドされたPythonパッケージのターゲットディレクトリです。ソースからPythonパッケージをビルドしてインストールすると(おそらくを実行してdistutilsを使用してpython setup.py install)、site-packagesデフォルトでインストールされたモジュールが見つかります。

標準的な場所があります:

  • Unix(純粋)1prefix/lib/pythonX.Y/site-packages
  • Unix(非純粋): exec-prefix/lib/pythonX.Y/site-packages
  • ウィンドウズ: prefix\Lib\site-packages

1 Pureは、モジュールがPythonコードのみを使用することを意味します。純粋でないものには、C / C ++コードも含めることができます。

site-packagesはデフォルトでPython 検索パスの一部であるため、そこにインストールされたモジュールは後で簡単にインポートできます。


便利な読書


10
場所はたまたま/usr/local/lib/python3.6/site-packagesubuntuにありました
メフメット

Gentooシステムをlib64
MultipleMonomials

2
condaまたはpipはサイトパッケージにインストールされますか、それとも手動で作成されたパッケージだけですか?
モニカヘドネック2017

2
本当に興味深い質問は次のとおりです。なぜこのディレクトリなのか?なぜ単にインストールしないの/usr/lib/python3.6ですか?
Torsten Bronger 2017

40

--userオプションをpip使用すると、パッケージはグローバルフォルダーではなくユーザーのフォルダーにインストールされ、管理者権限でpipコマンドを実行する必要はありません。

ユーザーのパッケージフォルダの場所は、次を使用して見つけることができます。

python -m site --user-site

これは次のようなものを出力します:

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

--userオプションをpip使用しない場合、パッケージは次のグローバルフォルダーにインストールされます。

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

これは次のようなものを出力します:

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

注:上記の出力値は、デフォルトでAnaconda 4.xがインストールされているWindows 10の場合です。


24

site-packagesは、Pythonがモジュールをインストールする場所です。

「探す」必要はありません。Python はそれ自体を見つける場所を知っています。この場所は常に PYTHONPATH(sys.path)の一部です。

プログラム的には、次のようにして見つけることができます。

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
おそらく、site.getsitepackages()をサイトにインポートする方が簡単です
JSharm 2018

1
すべてのPythonディストリビューションが持っているわけではなくsite-packages、これは発生しStopIterationます。たとえば、Debian(およびUbuntu)はdist-packages分散モジュールをインストールする必要があります。
マイクT

virtualenvを使用し、グローバルパッケージを継承しない場合、これは常に機能します。私はvirtualenvなしではコードを作成しません
Anthony Perot
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.