$ HOME / .local

时间:2015-05-16 10:53:35

标签: python pip

我注意到我的机器上有$HOME/.local,似乎这个目录主要包含与python相关的东西,here是它的完整列表(它有点像长)。

我想问一下哪个动作创建了这个目录?我想它是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答案说如果它是使用$HOME/.local/bin/hg创建的,则此目录中应该有pip但我没有此文件。它是用pip创建的还是没有?

2 个答案:

答案 0 :(得分:11)

它没有直接连接到Python,但是Pip使用它。让我们从头开始吧。首先,您应该了解/usr目录用于:

  

在当前的Unices中,/ usr是用户登陆程序和数据(而不是系统登陆程序和数据)的地方。

它应该用于系统安装的数据,即发行版的官方包。

/usr/local目录镜像/usr目录的结构,但系统管理员可以使用该目录为所有用户安装本地或第三方程序包。

~/.local目录现在仅针对单个用户具有相同的目的。

通常,您使用/usr目录使用默认包管理器安装包。但是,由于您使用Pip作为Python模块的包管理器,因此这些模块安装在~/.local中。

所以基本上pip可能已创建~/.local或只是其他任何程序将数据写入其中一个目录。例如,~/.local/share被大多数应用程序用来存储他们的数据。

答案 1 :(得分:1)

$ HOME / .local是用户应用程序将其文件和文件夹放在用户主目录中的位置。

根据Home Directory手册页的file-hierarchy(7)部分,应在$HOME/.local内的以下子目录之间划分特定于用户的数据:

  • ~/.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将软件包文件分发到/usr层次结构中,这在系统级遵循相同的逻辑,就像您的发行版的软件包管理器就可以。