回答:
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つのインストールを別々に保つことができます。
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
オプションを削除してください)。