$HOME/.local 的用途是什么
What is the purpose of $HOME/.local
我注意到我的机器上有 $HOME/.local
,这个目录似乎主要包含与 python 相关的内容,here 是完整列表吗(有点长)。
请问这个目录是哪个action创建的?我想它是 pip install --user -r requirements.txt
(下面是我已经弄明白的命令)但我想知道是否还有其他工具可以在这里存储数据?我想如果它是 pip
那么 easy_install
也可以这样做吗?您是否知道是否有任何其他工具使用此目录或者它是 pip
专用的?
以下命令显示从该目录导入了一些python模块,最后一个输出是here(有点长):
marek@ubuntu:~$ python -c 'import mock; print mock.__file__'
/home/marek/.local/lib/python2.7/site-packages/mock.pyc
marek@ubuntu:~$ echo $PYTHONPATH
marek@ubuntu:~$ tree .local/ | grep mock
│ ├── mock-1.0.1.egg-info
│ ├── mock.py
│ ├── mock.pyc
│ │ ├── mock.py
│ │ ├── mock.pyc
marek@ubuntu:~$ pip show -f mock
---
Name: mock
Version: 1.0.1
Location: /home/marek/.local/lib/python2.7/site-packages
Requires:
Files:
Cannot locate installed-files.txt
marek@ubuntu:~$ python -c 'import sys, pprint; pprint.pprint(sys.path)'
['',
'/home/marek/.local/lib/python2.7/site-packages/nupic-0.3.0.dev0-py2.7-linux-x86_64.egg',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/home/marek/.local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
marek@ubuntu:~$ python -v 2>&1 | tee modules
following 回答说如果这个目录是用 pip
创建的,应该有 $HOME/.local/bin/hg
但我没有这个文件。那么它是用 pip
创建的吗?
它没有直接连接到Python,但是Pip使用它。让我们从头开始。首先你应该明白,/usr
目录是干什么用的:
In current Unices, /usr is where user-land programs and data (as opposed to 'system land' programs and data) are.
应该用于系统安装的数据,即发行版的官方包。
/usr/local
目录反映了 /usr
目录的结构,但系统管理员可以使用它为所有用户安装本地或第三方软件包。
~/.local
目录现在具有相同的用途,仅供单个用户使用。
通常您会使用默认包管理器使用 /usr
目录安装您的包。但是由于您使用 Pip 作为 Python 模块的包管理器,因此这些模块安装在 ~/.local
.
所以基本上 pip
可能已经创建了 ~/.local
或任何其他程序将数据写入位于那里的目录之一。 ~/.local/share
例如,大多数应用程序使用它来存储它们的数据。
$HOME/.local 是用户应用程序将其文件和文件夹放置在用户主目录中的位置。
根据 Home Directory section of the file-hierarchy(7) man-page,user-specific 数据应在 $HOME/.local
内拆分为以下 sub-directories:
~/.local/bin
用于应出现在用户的 $PATH 搜索路径中的可执行文件。
在 Python 的情况下,这可能是像 pipenv
. 这样的工具
~/.local/lib
适用于与所有体系结构兼容的静态私有供应商数据。
在 Python 的情况下,这些是像 requests
. 这样的库
~/.local/share
用于多个包之间共享的资源。
在 Python 的情况下,这可能是 virtualenvs
。它也是 XDG Base Directory Specification 的一部分,它被称为 $XDG_DATA_HOME
. 的默认值
从以上观察可以清楚地看出,$HOME/.local
与 Python 本身没有任何关系。 pip install --user
将其文件放入 $HOME/.local
仅表示它符合 freedesktop.org 发布的建议。
如果您使用 sudo pip install
安装软件包,它将根据 Filesystem Hierarchy Standard into the /usr
层次结构分发软件包文件,这与 system-level 中的逻辑相同,就像您的发行版的软件包一样经理有。
我注意到我的机器上有 $HOME/.local
,这个目录似乎主要包含与 python 相关的内容,here 是完整列表吗(有点长)。
请问这个目录是哪个action创建的?我想它是 pip install --user -r requirements.txt
(下面是我已经弄明白的命令)但我想知道是否还有其他工具可以在这里存储数据?我想如果它是 pip
那么 easy_install
也可以这样做吗?您是否知道是否有任何其他工具使用此目录或者它是 pip
专用的?
以下命令显示从该目录导入了一些python模块,最后一个输出是here(有点长):
marek@ubuntu:~$ python -c 'import mock; print mock.__file__'
/home/marek/.local/lib/python2.7/site-packages/mock.pyc
marek@ubuntu:~$ echo $PYTHONPATH
marek@ubuntu:~$ tree .local/ | grep mock
│ ├── mock-1.0.1.egg-info
│ ├── mock.py
│ ├── mock.pyc
│ │ ├── mock.py
│ │ ├── mock.pyc
marek@ubuntu:~$ pip show -f mock
---
Name: mock
Version: 1.0.1
Location: /home/marek/.local/lib/python2.7/site-packages
Requires:
Files:
Cannot locate installed-files.txt
marek@ubuntu:~$ python -c 'import sys, pprint; pprint.pprint(sys.path)'
['',
'/home/marek/.local/lib/python2.7/site-packages/nupic-0.3.0.dev0-py2.7-linux-x86_64.egg',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/home/marek/.local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
marek@ubuntu:~$ python -v 2>&1 | tee modules
following 回答说如果这个目录是用 pip
创建的,应该有 $HOME/.local/bin/hg
但我没有这个文件。那么它是用 pip
创建的吗?
它没有直接连接到Python,但是Pip使用它。让我们从头开始。首先你应该明白,/usr
目录是干什么用的:
In current Unices, /usr is where user-land programs and data (as opposed to 'system land' programs and data) are.
应该用于系统安装的数据,即发行版的官方包。
/usr/local
目录反映了 /usr
目录的结构,但系统管理员可以使用它为所有用户安装本地或第三方软件包。
~/.local
目录现在具有相同的用途,仅供单个用户使用。
通常您会使用默认包管理器使用 /usr
目录安装您的包。但是由于您使用 Pip 作为 Python 模块的包管理器,因此这些模块安装在 ~/.local
.
所以基本上 pip
可能已经创建了 ~/.local
或任何其他程序将数据写入位于那里的目录之一。 ~/.local/share
例如,大多数应用程序使用它来存储它们的数据。
$HOME/.local 是用户应用程序将其文件和文件夹放置在用户主目录中的位置。
根据 Home Directory section of the file-hierarchy(7) man-page,user-specific 数据应在 $HOME/.local
内拆分为以下 sub-directories:
~/.local/bin
用于应出现在用户的 $PATH 搜索路径中的可执行文件。 在 Python 的情况下,这可能是像pipenv
. 这样的工具
~/.local/lib
适用于与所有体系结构兼容的静态私有供应商数据。 在 Python 的情况下,这些是像requests
. 这样的库
~/.local/share
用于多个包之间共享的资源。 在 Python 的情况下,这可能是virtualenvs
。它也是 XDG Base Directory Specification 的一部分,它被称为$XDG_DATA_HOME
. 的默认值
从以上观察可以清楚地看出,$HOME/.local
与 Python 本身没有任何关系。 pip install --user
将其文件放入 $HOME/.local
仅表示它符合 freedesktop.org 发布的建议。
如果您使用 sudo pip install
安装软件包,它将根据 Filesystem Hierarchy Standard into the /usr
层次结构分发软件包文件,这与 system-level 中的逻辑相同,就像您的发行版的软件包一样经理有。