热门标签:
Q:

Dist-packages和site-packages有什么区别?

我对python包安装过程有点恼火。 具体来说,安装在dist-packages目录和site-packages目录中的软件包有什么区别?

原网址
A:

dist-packages是一个Debian特定的约定,也存在于它的衍生产品中,如Ubuntu。 当模块从Debian软件包管理器进入这个位置时,它们被安装到dist-packages

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

由于easy_installpip是从包管理器安装的,它们也使用dist-packages,但它们将包放在这里:

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

来自Debian Python Wiki

dist-packages而不是site-packages。 第三方Python软件 从Debian软件包安装到dist软件包中,而不是 网站包。 这是为了减少系统之间的冲突。, 并且您可以手动安装任何来自源代码的Python构建。

这意味着如果您从源代码手动安装Python,它将使用site-packages目录。 这使您可以将两个安装分开,特别是因为Debian和Ubuntu依赖于Python的系统版本用于许多系统实用程序。

所有回答

共 1 条

author avatar

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选项)。

相似问题