为什么 pip 将包安装到 ~/.local/bin 中?

为什么 pip 将包安装到 ~/.local/bin 中?

当我用 pip 安装这个“Taurus Blazemeter 'bzt'”程序时,它最终被安装到~/.local/bin 文件夹中。

mkdir ~/bzt && cd ~/bzt
sudo apt-get install python default-jre-headless python-tk python-pip python-dev libxml2-dev libxslt-dev zlib1g-dev
sudo pip install bzt

有谁知道这个~/.local文件夹的用途以及为什么像这样的Python程序会安装在那里?

答案1

简而言之,这~/.local/bin是 Python 用户脚本目录的默认值,pip如果执行用户本地安装,则可能会将可执行文件安装到该目录中。它还可以将文件安装到 的其他子目录中~/.local,这是用户基本目录的默认值。更多详细信息如下。


我不确定这是否是最早的介绍,但该~/.local目录出现在文件系统层次结构规范系统init 系统,其中定义了以下几个子目录~/.local

〜/.local/bin

应出现在用户的 $PATH 搜索路径中的可执行文件。建议不要将对 shell 调用无用的可执行文件放置在该目录中;这些应该放在 ~/.local/lib 的子目录中。将依赖于体系结构的二进制文件放置在此位置时应小心,如果主目录在具有不同体系结构的多个主机之间共享,则可能会出现问题。

〜/.local/lib

与所有架构兼容的静态、私有供应商数据。

〜/.local/lib/arch-id

放置公共动态库的位置。要使用的架构标识符在多架构架构说明符(元组)列表中定义。

〜/.local/共享

多个包之间共享的资源,例如字体或艺术品。通常,存储在该目录下的文件的精确位置和格式受确保互操作性的规范的约束。如果应用程序发现 $XDG_DATA_HOME 设置,则应使用其中指定的目录而不是此目录。

Python 对目录的采用~/.local似乎是在 Python 2.6 中引入的,并记录在 PEP(Python 增强提案)370 中:

该规范包括以下针对 Unix 系统(包括 Mac OS X)的定义。

  • 用户基础目录

    ~/.local

  • 用户脚本目录:

    ~/.local/bin

  • 用户站点目录:

    ~/.local/lib/python2.6/site-packages

  • 用户数据目录:

    ~/.local/lib/python2.6

由此我们可以得出结论,Python有一个所谓的“基本用户目录”的概念,并且它的默认值为~/.local.基本用户目录在site该模块的 Python 文档。特别是,它提供了确定用户基本目录和用户站点目录、--user-base--user-site选项标志的值的方法。你可以像这样使用它们:

user@host:~$ python -m site --user-base

/home/user/.local

user@host:~$ python -m site --user-site

/home/user/.local/lib/python2.7/site-packages

~/.localStackExchange 网站上发布了几个与我用作参考的目录相关的问题:

相关内容