dist-packagesとsite-packagesの違いは何ですか?


243

私はpythonパッケージのインストールプロセスに少し違いがあります。具体的には、dist-packagesディレクトリとsite-packagesディレクトリにインストールされているパッケージの違いは何ですか?

回答:


226

dist-packagesはDebian固有の規約で、Ubuntuなどの派生物にも存在します。モジュールは、Debianパッケージマネージャーから次の場所に移動したときに、dist-packagesにインストールされます。

/usr/lib/python2.7/dist-packages

easy_installおよびpipはパッケージマネージャーからインストールされるため、dist-packagesも使用しますが、パッケージをここに配置します。

/usr/local/lib/python2.7/dist-packages

以下からのDebian Pythonのウィキ

site-packagesの代わりにdist-packages。DebianパッケージからインストールされたサードパーティのPythonソフトウェアは、site-packagesではなくdist-packagesに入ります。これは、システムのPythonと、手動でインストールするソースのPythonビルドとの競合を減らすためです。

これは、ソースからPythonを手動でインストールする場合、site-packagesディレクトリを使用することを意味します。特にDebianとUbuntuは多くのシステムユーティリティでPythonのシステムバージョンに依存しているため、これにより2つのインストールを別々に保つことができます。


22
これは正確ですか?私はpipでインストールし、dist-packagesに行きます。(Deb Squeeze + Py 2.6)
バーゼルシシャニ

4
私も同じです。pipまたはeasy_installでインストールされたパッケージはすべてdist-packagesに入ります。
モノストップ2012

1
ここでも同じですが、これらのインストールをすべて削除すると問題が発生しますか?
Mohamed Turki 2012

1
Debian 6.0.10の同じディレクトリ(Python 2.6でも)。
'2014

2
virtualenvをpipと共に使用する場合、pipはパッケージをsite-packagesディレクトリにインストールします。
diabloneo

4

dist-packagesaptと友達が自分のものをインストールするdebian固有のディレクトリでありsite-packages、標準のpipディレクトリです。

問題は、同じパッケージの異なるバージョンが異なるディレクトリに存在するとどうなるかです。

問題の私の解決策は、へdist-packagesのシンボリックリンクを作ることsite-packagesです:

for d in $(find $WORKON_HOME -type d -name dist-packages); do
  pushd $d
  cd ..
  if test -d dist-packages/__pycache__; then
    mv -v dist-packages/__pycache__/* site-packages/__pycache__/
    rmdir -v dist-packages/__pycache__
  fi
  mv -v dist-packages/* site-packages/
  rmdir -v dist-packages
  ln -sv site-packages dist-packages
  popd
done

(gnuツールを使用していない場合は、-vオプションを削除してください)。


1
私は少し質問が説明をrequiersので、あなたはあなたのソリューションで解決した問題が混乱している
ユルゲン・K.

@JürgenK.:私にとっての問題は、異なるディレクトリに異なるバージョンがある場合に使用されるパッケージでした。
sds
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.