pip install: пожалуйста, проверьте разрешения и владельца этого каталога

155

При установке pip и python я столкнулся с сообщением:

Каталог '/ Users / Parthenon / Library / Logs / pi' или его родительский каталог не принадлежат текущему пользователю, и журнал отладки был отключен. Пожалуйста, проверьте разрешения и владельца этого каталога. Если вы выполняете pip с помощью sudo, вам может потребоваться флаг -H.

потому что теперь я должен установить с помощью sudo.

У меня был Python и несколько библиотек, уже установленных на моем Mac, я использую Yosemite. Недавно мне пришлось сделать чистую вайп, а затем переустановить ОС. Теперь я получаю эту подсказку, и мне трудно понять, как ее изменить.

До моей командной строки Parthenon$теперьPhilips-MBP:~ Parthenon$

Я единственный владелец этого компьютера, и это единственный аккаунт на нем. Кажется, это проблема при обновлении до python 3.4, кажется, что ничего не в нужном месте, virtualenv не идет туда, куда я ожидаю, и т. Д.

Фил Эндрюс
источник
Имя вашей учетной записи Филипп?
Комаромы
Я только что заметил это, когда вчера использовал pip на своей машине, что вы подразумеваете под "virtualenv" не так, как вы ожидаете?
Падрайк Каннингем
Я установил Python 3.4 на свою машину, но когда я запускаю python на своем терминале, он все еще работает на 2.7 даже после прохождения всего процесса установки. Я упомянул только virtualenv, потому что обычно ожидаю найти его в Library / Python / 3.4, но нет Библиотеки / Python / 3.4
Фил Эндрюс
вам нужно использовать что-то вроде python3 или python3.4, чтобы использовать интерпретатор python3, вновь открываемые элементы - это просто настройка, ubuntu имеет такую ​​же опцию.
Падрайк Каннингем
@PadraicCunningham вы получаете ту же проблему пипс хотя? Вы недавно обновились до Yosemite?
Фил Эндрюс

Ответы:

127

Я также видел это изменение на моем Mac, когда я перешел с работы pipна sudo pip. Добавление -Hк sudo приводит к тому, что сообщение исчезает для меня. Например

sudo -H pip install foo

man sudoговорит мне, что -Hвызывает sudoдля установки $HOMEцелевых пользователей (root в этом случае).

Похоже, что pip изучает $HOME/Library/Logи sudoпо умолчанию не устанавливает $HOMEзначение /root/. Не удивительно ~/Library/Log, что вы являетесь пользователем, а не пользователем root.

Я подозреваю, что это недавнее изменение в пипсах. Я пока поработаю с этим, sudo -Hчтобы обойти.

фон
источник
18
Обратите внимание, что использование sudo pipабсолютно некорректно. Для получения дополнительной информации, пожалуйста, обратитесь сюда stackoverflow.com/questions/33004708/…
Микко Охтамаа
У меня была такая же проблема, но да, теперь я должен установить, используя флаг "-H".
Малахийский базар
62

Проблема в том, что вы как-то установили в virtualenv использование sudo. Вероятно, случайно. Это означает, что 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должен снова написать эти файлы.

Подробнее об управлении разрешениями файлов в UNIX

Микко Охтамаа
источник
Пип все еще пишет с ошибкой. У меня также есть подобное предупреждение, и мои права доступа правильные, на самом деле OP не использует virtualenv, поэтому имеет смысл, что для глобальной установки пакетов потребуется sudo.
Падрайк Каннингем
1
@PadraicCunningham: Если pip выдает ошибку, что ваши права доступа неверны, пожалуйста, покажите права доступа к вашему файлу, чтобы мы могли выяснить, что с ними не так. В противном случае помощь будет выстрелом в темноте.
Микко Охтамаа
Также я предлагаю вам открыть еще один вопрос, потому что ваш вопрос может отличаться от оригинального автора
Mikko Ohtamaa
Используя свое имя пользователя, я получил сообщение об ошибке: Вход: sudo chown -R USERNAME / Users / USERNAME / Библиотека / Журналы / pip Выход: chown: / Users / USERNAME / Библиотека / Logs / pip: Нет такого файла или каталога
user2755660
61

pip install --user <package name> (не нужно sudo) работал для меня очень похожая проблема.

Сафван
источник
Вы должны дать хотя бы одно требование для установки (см. «Установка справки pip»)
Амир
0

базовая информация

  • система: Mac OS 18.0.0
  • текущий пользователь: yutou

ключ

  1. добавить текущий аккаунт в группу wheel
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

В групповом колесе только один член 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
kougazhang
источник
0

Если вы изменили переменную $ PATH, это также может вызвать проблему. Если вы думаете, что это может быть проблемой, проверьте ~ / .bash_profile или ~ / .bashrc

jeffhale
источник