What's the difference between dist-packages and site-packages?
dist-packages is a Debian-specific convention that is also present in its derivatives, like Ubuntu. Modules are installed to
dist-packages when they come from the Debian package manager into this location:
pip are installed from the package manager, they also use
dist-packages, but they put packages here:
From the Debian Python Wiki:
dist-packages instead of site-packages. Third party Python softwareinstalled from Debian packages goes into dist-packages, notsite-packages. This is to reduce conflict between the system Python,and any from-source Python build you might install manually.
This means that if you manually install Python from source, it uses the
site-packages directory. This allows you to keep the two installations separate, especially since Debian and Ubuntu rely on the system version of Python for many system utilities.
dist-packages is the debian-specific directory where
apt and friends install their stuff, and
site-packages is the standard
The problem is -- what happens when different versions of the same package are present in different directories?
My solution to the problem is to make
dist-packages a symlink to
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 popddone
(if you are not using gnu tools, remove the