为什么要将Python包安装到`~/.local`?

5 投票
2 回答
4152 浏览
提问于 2025-04-16 09:11

背景

  1. 我不使用 OS X 自带的 Python 版本进行开发(在 OS X 10.6 上是 Python 2.5.4 和 2.6.1)。
  2. 我不会在 OS 自带的 Python 版本的 site-packages 目录下安装任何东西。(唯一的例外是从二进制包安装的 Mercurial,它在 Python 2.6.1 的 site-packages 目录下安装了两个包。)
  3. 我安装了三个版本的 Python,都是通过 Mac OS X 安装盘镜像安装的:
    1. Python 2.6.6
    2. Python 2.7
    3. Python 3.1.2
  4. 我不喜欢把我的 Python 安装搞得乱七八糟。所以我只在 site-packages 目录下安装以下五个基础包。关于安装这些包的具体方法/命令,可以查看 SO 问题 4324558
    1. setuptools/ez_setup
    2. distribute
    3. pip
    4. virtualenv
    5. virtualenvwrapper
  5. 其他所有包都安装在虚拟环境中。
  6. 这台 MacBook 只有我一个人使用。

问题

  1. 根据以上背景,我为什么要把这五个基础包安装在 ~/.local 目录下?因为我把这些基础包安装到我自己安装的 Python 版本的 site-packages 目录中,所以我和 OS X 的 Python 版本是隔离的。
  2. 使用这种方法,我是否需要担心 Glyph 的评论,提到其他东西可能会出问题(见他下面的评论)?

再次强调,我只关心这五个基础包应该安装在哪里。

相关问题/信息

我之所以问这个问题,是因为 Glyph 对我在 SO 问题 4314376 的回答的评论,内容是:

不!绝对不要用 sudo python setup.py install 之类的命令。写一个 ~/.pydistutils.cfg,把你的 pip 安装放到 ~/.local 或其他地方。特别是像 ez_setup.py 这样的文件,往往会下载更新版本的 setuptools 和 easy_install,这可能会破坏你操作系统上的其他东西。

之前,我问过 安装 pip、virtualenv 和 distribute 的正确方法是什么?。但是,没有人回答为什么要使用 ~/.local

2 个回答

1

到2020年,我觉得把Python包安装到.local并不是个好主意,应该使用virtualenv为每个包创建一个独立的环境。

我的理由

虽然安装到.local不会影响系统的Python,但在.local中安装的多个包之间还是可能会发生冲突。

附注:如果你喜欢virtualenv,你也可以试试pipx

4

在使用框架构建的Mac OS X安装中,选择是否安装到.local其实没有特别好的理由支持或反对。关于这个问题,Python的核心开发者们还有一些争论。Glyph认为,.local这个位置是为了其他类Unix系统在Python 2.6中引入的,应该在Mac OS X上使用,这样可以简化第三方安装的过程。而其他人则认为,之前在Mac OS X框架构建中使用的传统位置更自然。最终,这个选择还是要看你自己。如果你在使用虚拟环境,只要能用就没必要太担心这个问题。

撰写回答