pythonパッケージのインストールプロセスに少し困惑しています。具体的には、dist-packagesディレクトリとsite-packagesディレクトリにインストールされるパッケージの違いは何ですか?
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
サイトパッケージの代わりにdistパッケージ。 DebianパッケージからインストールされたサードパーティPythonソフトウェアは、サイトパッケージではなく、dist-packagesに入ります。これは、システムPythonと、手動でインストールする可能性のあるfrom-source Python buildとの間の競合を減らすためです。
つまり、ソースからPythonを手動でインストールすると、site-packagesディレクトリが使用されます。これにより、特にDebianとUbuntuは多くのシステムユーティリティでPythonのシステムバージョンに依存しているため、2つのインストールを別々に保つことができます。
dist-packages
は、apt
とその友達がインストールする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
オプションを削除してください)。