Не удалось установить пакеты из-за ошибки EnvironmentError: [Errno 13]

В моем терминале MacOS Mojave я хотел установить пакет python с помощью pip. В конце говорится:

You are using pip version 10.0.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Итак, я хотел обновить pip с помощью данной команды, но получил сообщение об ошибке:

Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: 
'/Library/Python/2.7/site-packages/pip-18.0-py2.7.egg/EGG-INFO/PKG-INFO'
Consider using the `--user` option or check the permissions.

Я не очень понимаю, что мне теперь делать. Также я понял, что в сообщении об ошибке написано Python 2.7, но у меня есть и я хочу использовать только Python 3.

Вы читали: «Рассмотрите возможность использования опции --user или проверьте разрешения»?

Klaus D. 23.10.2018 14:53

Я только что попробовал, вы правы! Я думал, он будет ПРОВЕРИТЬ разрешения, а не ДАВАТЬ разрешения. Спасибо!

Adler 23.10.2018 14:55

Чтобы установить пакеты для python3, вам необходимо использовать pip3. Чтобы обновить pip, просто запустите sudo, если вы столкнетесь с ошибками разрешений.

BoboDarph 23.10.2018 15:05

Возможный дубликат pip install -r: OSError: [Errno 13] В доступе отказано

phd 23.10.2018 22:38
stackoverflow.com/…
phd 23.10.2018 22:38
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
174
5
324 213
18
Перейти к ответу Данный вопрос помечен как решенный

Ответы 18

Что касается команды разрешений, попробуйте использовать sudo перед командой терминала:

sudo pip install --upgrade pip

Sudo позволяет запускать команду с привилегиями суперпользователя и устанавливает пакет для глобальной общесистемной установки Python. В идеале вам следует создать виртуальную среду для проекта, над которым вы работаете. Взгляните на это

Что касается python Попробуйте запустить pip как исполняемый файл, например:

python3.6 -m pip install <package>

Я не совсем уверен, но запуск таких команд с правами root обычно не лучшая идея: как только вы используете sudo, пользователь сменится с «you» на «root», что может привести к нежелательным результатам. Например, библиотеки могут быть установлены в / home / root вместо / home / yourusername. Кроме того, файлы будут созданы совместно с пользователем / группой root. Sudo нужен только тогда, когда команда должна сохранять файлы в системных папках, таких как / usr / local / bin! ;)

funder7 06.01.2021 20:35

Да, это правда. Я добавил комментарий по этому поводу

Dominique Paul 07.01.2021 09:33
Ответ принят как подходящий

Если вы хотите использовать python3 + для установки пакетов, вам необходимо использовать pip3 install package_name

И чтобы решить ошибка 13, вам нужно добавить --user в конце

pip3 install package_name --user

Обновлено:

Для любого проекта на Python настоятельно рекомендуется работает с Виртуальная среда, это инструмент, который помогает разделять зависимости, необходимые для разных проектов, путем создания для них изолированных виртуальных сред Python.

Чтобы создать его с python3 +, вы должны использовать следующую команду:

virtualenv enviroment_name -p python3

И затем вы работаете над этим просто с помощью активация:

source enviroment_name/bin/activate

После активации виртуальной среды имя вашей виртуальной среды появится на левой стороне терминала. Это даст вам знать, что виртуальная среда в настоящее время активна. Теперь вы можете установить зависимости, связанные с проектом, в этой виртуальной среде, просто используя pip.

pip install package_name

Я сделал это, но проблема не исчезла. Я установил колбу, но ее все еще нет в моем venv. Что я могу сделать?

Leonard 04.09.2019 10:15

Попробуйте virtualenv -p python3.8 enviroment_name Использование: virtualenv [ОПЦИИ] DEST_DIR

Tommy Gibbons 24.07.2020 16:53

Прекрасно работает. Спасибо!

Haardik Dharma 21.08.2020 08:38

@Leonard У меня такая же проблема, она не устанавливается в venv. Это очень неприятно, как вы это исправили?

Amon 09.06.2021 21:45

Вы все пробовали с анакондой @Amon?

Gonzalo Garcia 09.06.2021 22:10

@GonzaloGarcia нет, просто обычный питон. Я не подозревал, что такая простая задача вызовет такую ​​серьезную проблему.

Amon 09.06.2021 22:21

@Amon привет, я спросил это, когда я был полным новичком и у меня была испорченная среда python, когда я не знал, что мне не следует использовать anaconda и pip вместе. Я в основном сбросил всю среду Python, очистил новую свежую установку и с тех пор не сталкивался с большими проблемами.

Leonard 04.07.2021 12:58

У меня были те же проблемы. Что сработало для меня, так это сначала создать virtualenv, активировать venv, затем обновить pip, а затем установить все, что вам нужно, не вмешиваясь в настройки системы.

Timothy Lombard 19.08.2021 05:55

У меня тоже была такая же проблема, я пробовал много разных командных строк, у меня сработала эта:

Пытаться:

    conda install py-xgboost

Вот что у меня получилось:

Collecting package metadata: done
Solving environment: done

## Package Plan ##

  environment location: /home/simplonco/anaconda3

  added / updated specs:
    - py-xgboost


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _py-xgboost-mutex-2.0      |            cpu_0           9 KB
    ca-certificates-2019.1.23  |                0         126 KB
    certifi-2018.11.29         |           py37_0         146 KB
    conda-4.6.2                |           py37_0         1.7 MB
    libxgboost-0.80            |       he6710b0_0         3.7 MB
    mkl-2019.1                 |              144       204.6 MB
    mkl_fft-1.0.10             |   py37ha843d7b_0         169 KB
    mkl_random-1.0.2           |   py37hd81dba3_0         405 KB
    numpy-1.15.4               |   py37h7e9f1db_0          47 KB
    numpy-base-1.15.4          |   py37hde5b4d6_0         4.2 MB
    py-xgboost-0.80            |   py37he6710b0_0         1.7 MB
    scikit-learn-0.20.2        |   py37hd81dba3_0         5.7 MB
    scipy-1.2.0                |   py37h7c811a0_0        17.7 MB
    ------------------------------------------------------------
                                           Total:       240.0 MB

The following NEW packages will be INSTALLED:

  _py-xgboost-mutex  pkgs/main/linux-64::_py-xgboost-mutex-2.0-cpu_0
  libxgboost         pkgs/main/linux-64::libxgboost-0.80-he6710b0_0
  py-xgboost         pkgs/main/linux-64::py-xgboost-0.80-py37he6710b0_0

The following packages will be UPDATED:

  ca-certificates     anaconda::ca-certificates-2018.12.5-0 --> pkgs/main::ca-certificates-2019.1.23-0
  mkl                                            2019.0-118 --> 2019.1-144
  mkl_fft                              1.0.4-py37h4414c95_1 --> 1.0.10-py37ha843d7b_0
  mkl_random                           1.0.1-py37h4414c95_1 --> 1.0.2-py37hd81dba3_0
  numpy                               1.15.1-py37h1d66e8a_0 --> 1.15.4-py37h7e9f1db_0
  numpy-base                          1.15.1-py37h81de0dd_0 --> 1.15.4-py37hde5b4d6_0
  scikit-learn                        0.19.2-py37h4989274_0 --> 0.20.2-py37hd81dba3_0
  scipy                                1.1.0-py37hfa4b5c9_1 --> 1.2.0-py37h7c811a0_0

The following packages will be SUPERSEDED by a higher-priority channel:

  certifi                                          anaconda --> pkgs/main
  conda                                            anaconda --> pkgs/main
  openssl                anaconda::openssl-1.1.1-h7b6447c_0 --> pkgs/main::openssl-1.1.1a-h7b6447c_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
libxgboost-0.80      | 3.7 MB    | ##################################### | 100% 
mkl_random-1.0.2     | 405 KB    | ##################################### | 100% 
certifi-2018.11.29   | 146 KB    | ##################################### | 100% 
ca-certificates-2019 | 126 KB    | ##################################### | 100% 
conda-4.6.2          | 1.7 MB    | ##################################### | 100% 
mkl-2019.1           | 204.6 MB  | ##################################### | 100% 
mkl_fft-1.0.10       | 169 KB    | ##################################### | 100% 
numpy-1.15.4         | 47 KB     | ##################################### | 100% 
scipy-1.2.0          | 17.7 MB   | ##################################### | 100% 
scikit-learn-0.20.2  | 5.7 MB    | ##################################### | 100% 
py-xgboost-0.80      | 1.7 MB    | ##################################### | 100% 
_py-xgboost-mutex-2. | 9 KB      | ##################################### | 100% 
numpy-base-1.15.4    | 4.2 MB    | ##################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

Ответ находится в сообщении об ошибке. В прошлом вы или процесс выполняли sudo pip, в результате чего некоторые каталоги в /Library/Python/2.7/site-packages/... имели разрешения, которые делали его недоступным для вашего текущего пользователя.

Затем вы сделали pip install whatever, который основан на другом.

Итак, чтобы исправить это, посетите /Library/Python/2.7/site-packages / ... и найдите каталог с правами root или not-your-user и либо удалите, а затем переустановите эти пакеты, либо просто установите право владения пользователем. к кому должен иметь доступ.

простой и рабочий. используйте $ whoami, чтобы узнать, каким пользователем вы сейчас являетесь, тогда $ sudo chown username /Library/Python/2.7/site-packages/ затем установите pip что угодно ... Возможно, вам придется использовать chown рекурсивно

Sunil Kumar 17.08.2019 10:02

У меня была такая же проблема при установке numpy с pip install numpy.

Потом я попробовал

sudo -H pip3 install --upgrade pip

sudo -H pip3 install numpy

У меня это сработало.

Объяснение : Параметр -H (HOME) с sudo устанавливает переменную среды HOME в домашний каталог целевого пользователя (по умолчанию root). По умолчанию sudo не изменяет HOME.

Я делал те же ошибки, когда понял, что создал свою виртуальную среду как пользователь root. Он был защищен от записи, поэтому проверьте, защищена ли ваша виртуальная среда от записи. сделай новый венв и попробуй еще раз

У меня такая же ошибка, когда я пытался установить пакет (flask-classful) .
Я сделал ошибку, установив анаконду как root. Я сменил владельца установленной папки anaconda и смог успешно установить пакет.

Используйте команду chown с опцией -R, чтобы рекурсивно изменить владельца установленной папки anaconda следующим образом:

chown -R owner:group /path/to/anaconda

Здесь владелец - это ваше имя пользователя, а группа - это имя группы.

Это сработало для меня:

 python3 -m venv env
 source ./env/bin/activate
 python -m pip install package

(Из Github: https://github.com/googlesamples/assistant-sdk-python/issues/236)

попробуйте эту командную строку ниже для MacOS, чтобы проверить права пользователя.

$ sudo python -m pip install --user --upgrade pip

просто sudo pip install packagename

У меня установлена ​​анаконда для Python 3. У меня также есть Python2 на моем Mac.

python --version

дает мне

Python 3.7.3

python2.7 --version

дает мне

Python 2.7.10

Я хотел установить пакет pyspark в python2, учитывая, что он уже установлен в python3.

python2.7 -m pip install pyspark

дает мне ошибку

Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/pyspark' Consider using the --user option or check the permissions.

Приведенная ниже команда решила это. Слава богу, мне не пришлось менять конфигурацию.

python2.7 -m pip install pyspark --user

Collecting pyspark Requirement already satisfied: py4j==0.10.7 in /Library/Python/2.7/site-packages (from pyspark) (0.10.7) Installing collected packages: pyspark Successfully installed pyspark-2.4.4 You are using pip version 18.1, however version 19.3.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.

Для MacOs и Unix

Просто добавив sudo к команде, она будет работать, как суперпользователь.

sudo pip install --upgrade pip

Однако рекомендуется не делать этого напрямую - см. эта почта

Это совершенно бесполезно для пользователей Windows, и эта ошибка чаще встречается у пользователей Windows из-за операционных разрешений Windows. Кроме того, команды должны быть заключены в блоки кода, когда они не читаются.

logos_164 02.11.2019 20:10

Я уже пробовал все предложения, размещенные здесь, но все еще получаю ошибку 13,

Я использую Windows, и моя версия python - 3.7.3

После 5 часов попыток решить этот шаг у меня сработал:

Пытаюсь открыть командную строку запустить от имени администратора

У меня была аналогичная проблема с venv на смонтированном разделе NTFS в Linux со всеми необходимыми разрешениями. Убедившись, что pip работал с --ignore-installed, решил это, то есть:

python -m pip install --upgrade --ignore-installed

На Mac нет каталога 3.7 или каталог 3.7 принадлежит root. Итак, я удалил этот каталог, создал новый каталог для текущего пользователя и переместил его туда. После этого установка завершится без ошибок.

sudo rm -rf /Library/Python/3.7
mkdir 3.7
sudo mv 3.7 /Library/Python
ll /Library/Python/
pip3 install numpy

Это также происходит со мной, когда я пытаюсь установить пакет opencv-python:

installation attempt

Я могу исправить это с помощью командной строки

python3 -m pip install {name of package} --user

Когда я пытаюсь установить указанный пакет, команда становится:

python3 -m pip install opencv-python --user

В результате:

result

Я использовал python3 -m pip install xxx

ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/3.8'
Consider using the `--user` option or check the permissions.

/Library/Python/3.8 Указывает, что python3, который я использую, является общесистемным питоном и, следовательно, имеет проблемы с разрешениями. Решения, включающие флаги --user и виртуальные окружения, решают эту проблему.

Для меня использовать самогон удобнее всего:

brew install [email protected]
brew link [email protected]
which python3

После чего python3 -m pip install xxx удастся без проблем. Обратите внимание, что sudo использовать не следует.

Принцип тот же: вы запускаете новую среду, менее привилегированную. Это означает, что все пакеты, которые вам нужны из старой среды, необходимо снова установить в этой новой среде.

Я думаю, используйте флаг --user, если вы не хотите все переустанавливать.

Чтобы узнать, действительно ли это проблема с разрешениями, запустите следующую команду, чтобы установить пакет с именем xxx.

pip install --user xxx

например: для установки пакета bcrypt запустить,

pip install --user bcrypt

Другие вопросы по теме