在安装pip和python时,我遇到了一个说:
目录'/ Users / Parthenon / Library / Logs / pi'或其父目录不归当前用户所有,并且已禁用调试日志。请检查该目录的权限和所有者。如果用sudo执行pip,你可能需要-H标志。
因为我现在必须使用sudo
安装。
我已经在我的Mac上安装了python和一些库,我正在运行Yosemite。我最近不得不做一个干净的擦拭,然后重新安装操作系统。现在我收到了这个提示,我无法弄清楚如何改变它
在我的命令行之前是Parthenon$
现在它是Philips-MBP:~ Parthenon$
我是这台电脑的唯一所有者,这是唯一的帐户。这似乎是一个问题,当升级到python 3.4,似乎没有什么在正确的地方,virtualenv不会去我想象的地方,等等。
当我从运行pip
到sudo pip
时,我也在Mac上看到了这个变化。将-H
添加到sudo会导致消息消失。例如。
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 <package name>
(不需要sudo)为我工作了一个非常类似的问题。
这里的问题是你以某种方式使用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
应该能够再次写这些文件。
sudo dscl . -append /Groups/wheel wheel $(whoami)
chmod -R 775 ${this_is_your_python_package_path}
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
如果您更改了可能导致问题的$ PATH变量。如果您认为可能是问题,请检查〜/ .bash_profile或〜/ .bashrc