问题:dist-packages和site-packages有什么区别?
我对python软件包的安装过程有些不满意。具体来说,安装在dist-packages目录和site-packages目录中的软件包之间有什么区别?
回答 0
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-packages而不是site-packages。从Debian软件包安装的第三方Python软件进入dist软件包,而不是站点软件包。这是为了减少系统Python与您可能手动安装的任何源Python构建之间的冲突。
这意味着,如果您从源代码手动安装Python,它将使用site-packages目录。这使您可以将两个安装分开,特别是因为Debian和Ubuntu在许多系统实用程序中都依赖Python的系统版本。
回答 1
dist-packages
是debian专用的目录,apt
朋友可以在其中安装他们的东西,并且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
选项)。