为什么要将Python包安装到`~/.local`?
背景
- 我不使用 OS X 自带的 Python 版本进行开发(在 OS X 10.6 上是 Python 2.5.4 和 2.6.1)。
- 我不会在 OS 自带的 Python 版本的 site-packages 目录下安装任何东西。(唯一的例外是从二进制包安装的 Mercurial,它在 Python 2.6.1 的 site-packages 目录下安装了两个包。)
- 我安装了三个版本的 Python,都是通过 Mac OS X 安装盘镜像安装的:
- Python 2.6.6
- Python 2.7
- Python 3.1.2
- 我不喜欢把我的 Python 安装搞得乱七八糟。所以我只在 site-packages 目录下安装以下五个基础包。关于安装这些包的具体方法/命令,可以查看 SO 问题 4324558。
- 其他所有包都安装在虚拟环境中。
- 这台 MacBook 只有我一个人使用。
问题
- 根据以上背景,我为什么要把这五个基础包安装在
~/.local
目录下?因为我把这些基础包安装到我自己安装的 Python 版本的 site-packages 目录中,所以我和 OS X 的 Python 版本是隔离的。 - 使用这种方法,我是否需要担心 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框架构建中使用的传统位置更自然。最终,这个选择还是要看你自己。如果你在使用虚拟环境,只要能用就没必要太担心这个问题。