我注意到我的机器上有$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
创建的还是没有?
答案 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
层次结构中,这在系统级遵循相同的逻辑,就像您的发行版的软件包管理器就可以。