关于python:pip install:请检查该目录的权限和所有者

pip install: Please check the permissions and owner of that directory

在安装pip和python时,我遇到了一个说:

The directory '/Users/Parthenon/Library/Logs/pi' or its parent directory is not owned by the current user and the debug log has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want the -H flag.

因为我现在必须使用sudo安装。

我已经在我的Mac上安装了python和一些库,我正在运行Yosemite。 我最近不得不做一个干净的擦拭,然后重新安装操作系统。 现在我收到了这个提示,我无法弄清楚如何改变它

在我的命令行Parthenon$之前它现在是Philips-MBP:~ Parthenon$

我是这台电脑的唯一所有者,这是唯一的帐户。 这似乎是一个问题,当升级到python 3.4,似乎没有什么在正确的地方,virtualenv不会去我想象的地方,等等。


当我从pip运行到sudo pip时,我在Mac上也看到了这个变化。将-H添加到sudo会导致消息消失。例如。

1
sudo -H pip install foo

man sudo告诉我-H导致sudo$HOME设置为目标用户(在本例中为root)。

所以看来pip正在调查$HOME/Library/Log,默认情况下sudo没有将$HOME设置为/root/。毫不奇怪,~/Library/Log作为用户而不是root用户拥有。

我怀疑这是最近pip的一些变化。我现在用sudo -H运行它来解决问题。


pip install --user (不需要sudo)为我工作了一个非常类似的问题。


这里的问题是你以某种方式使用sudo安装到virtualenv中。可能是偶然的。这意味着root用户将重写Python包数据,使所有文件由root拥有,而普通用户不再能够写入这些文件。通常virtualenv应该仅由普通的UNIX用户使用和拥有。

您可以通过将UNIX文件权限包更改为您的用户来解决此问题。尝试:

1
2
$ sudo chown -R USERNAME /Users/USERNAME/Library/Logs/pip
$ sudo chown -R USERNAME /Users/USERNAME/Library/Caches/pip

那么pip应该能够再次写入这些文件。

有关UNIX文件权限管理的更多信息


如果您更改了可能导致问题的$ PATH变量。如果您认为可能是问题,请检查?/ .bash_profile或?/ .bashrc


基础信息

  • system:mac os 18.0.0
  • 当前用户:yutou

钥匙

  • 将当前帐户添加到wheel组
  • 1
    sudo dscl . -append /Groups/wheel wheel $(whoami)
  • 将python包模式修改为775。
  • 1
    chmod -R 775 ${this_is_your_python_package_path}

    整个东西

    • 当python3编译得很好时,信息就像问题所说的那样。
    • 我尝试使用pip3 install requests并获得:
    1
    2
    3
    4
    File"/usr/local/python3/lib/python3.6/os.py", line 220, in makedirs
        mkdir(name, mode)
    PermissionError: [Errno 13] Permission denied:
    '/usr/local/python3/lib/python3.6/site-packages/requests'
    • 所以我cd /usr/local/python3/lib/python3.6/site-packages
      然后ls -al得到:
    1
    drwxr-xr-x    6 root   wheel   192B  2 27 18:06 requests/

    当我看到这个,我理解,makedirs是一个写作的行为,
    但是请求模式drwxrwxr-x仅替换用户root
    可以写请求文件。
    如果将yutou(whoami)添加到组轮,并修改包
    组轮可以写,然后我可以写,问题解决了。

    如何添加yutou到组轮?
    +检测组轮,sudo dscl . -list /groups GroupMembership,你会发现:

    1
    wheel                    root

    组轮只有一个成员根。
    +将yutou添加到组轮sudo dscl . -append /Groups/wheel wheel yutou
    +检查,sudo dscl . -list /groups GroupMembership

    1
    wheel                    root yutou

    修改python包模式

    1
    chmod -R 775 /usr/local/python3/lib/python3.6