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

问题描述 投票:149回答:4

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

目录'/ Users / Parthenon / Library / Logs / pi'或其父目录不归当前用户所有,并且已禁用调试日志。请检查该目录的权限和所有者。如果用sudo执行pip,你可能需要-H标志。

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

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

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

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

python pip sudo osx-yosemite
4个回答
124
投票

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

sudo -H pip install foo

man sudo告诉我,-H导致sudo$HOME设置为目标用户(在这种情况下为root)。

所以看起来pip正在研究$HOME/Library/Logsudo默认情况下不会将$HOME设置为/root/。毫不奇怪,~/Library/Log是您作为用户而不是root拥有的。

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


59
投票

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


56
投票

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

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

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

然后pip应该能够再次写这些文件。

More information about UNIX file permission management


0
投票

basic info

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

the key

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

the whole thing

  • 当python 3编译时,信息就像问题所说的那样。
  • 我尝试使用pip3 install requests并得到:
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并得到:
drwxr-xr-x    6 root   wheel   192B  2 27 18:06 requests/

当我看到这个,我明白了,makedirs是一个写动作,但是请求模式drwxrwxr-x只显示用户root可以写请求文件。如果添加yutou(whoami)到组轮,并修改包到组轮可以写,那么我可以写,并解决问题。

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

wheel                    root

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

wheel                    root yutou

修改python包模式

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.