【问题标题】:pip install: Please check the permissions and owner of that directorypip install:请检查该目录的权限和所有者
【发布时间】:2015-03-08 07:57:03
【问题描述】:

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

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

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

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

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

我是这台计算机的唯一所有者,并且这是它的唯一帐户。升级到 python 3.4 时这似乎是一个问题,似乎没有什么在正确的位置,virtualenv 没有达到我期望的位置,等等。

【问题讨论】:

  • 您的帐户名称是 Philip 吗?
  • 我昨天在我自己的机器上使用 pip 时刚刚注意到发生了这种情况,你说的 virtualenv 没有达到你期望的地方是什么意思?
  • 我在我的机器上安装了 Python 3.4,但是当我在终端中运行 python 时,即使完成了整个安装过程,它仍然运行 2.7。我只提到了 virtualenv,因为我通常希望在 Library/Python/3.4 中找到它,但没有 Library/Python/3.4
  • 你需要使用python3或python3.4之类的东西才能使用python3解释器,重新打开的项目只是一个设置,ubuntu有相同的选项。
  • @PadraicCunningham 你遇到同样的点子问题了吗?您最近升级到优胜美地了吗?

标签: python pip sudo osx-yosemite


【解决方案1】:

当我从运行 pip 转到 sudo 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 运行它以解决问题。

【讨论】:

  • 请注意,使用sudo pip 是完全错误的。欲了解更多信息,请参阅此处stackoverflow.com/questions/33004708/…
  • 我遇到了同样的问题,但是现在我必须使用“-H”标志进行安装。
【解决方案2】:

这里的问题是您以某种方式使用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

【讨论】:

  • Pip 仍然写入错误。我也有类似的警告,我的权限是正确的,OP 实际上并没有使用 virtualenv,所以全局安装包需要 sudo 是有意义的。
  • @PadraicCunningham:如果 pip 提示您的权限不正确,请显示您的文件权限,以便我们找出问题所在。否则,帮助将是在黑暗中开枪。
  • 另外我建议你打开另一个问题,因为你的问题可能与原作者的不同
  • 使用我自己的用户名,我收到一个错误:输入:sudo chown -R USERNAME /Users/USERNAME/Library/Logs/pip 输出:chown: /Users/USERNAME/Library/Logs/pip:没有这样的文件或目录
【解决方案3】:

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

【讨论】:

  • 您必须给出至少一个安装要求(参见“pip help install”)
【解决方案4】:

基本信息

  • 系统:mac os 18.0.0
  • 当前用户:yutou

钥匙

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

整件事

  • python3编译好后,信息如问题所说。
  • 我尝试使用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) 到组轮,并修改包 到群轮可以写,我就可以写了,问题就解决了。

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

wheel                    root

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

wheel                    root yutou

修改python打包方式

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 2018-12-31
      • 2011-12-16
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      相关资源
      最近更新 更多