Вопрос или проблема
Предыстория
Инструкции предполагают установку numpy в виртуальном окружении Python (лог ниже). Лог указывает на предупреждения и ошибки: хотя процесс установки показывает ‘Успех’, предупреждения / ошибки указывают на неопределенность. Тем не менее:
Вопросы
- Каковы проблемы, связанные с указанными ошибками и предупреждениями?
- Существует ли тест, который подтвердит, что проблем не будет?
- Как можно улучшить команду установки, чтобы избежать тех же ошибок / предупреждений?
ЛОГ
(deep_learning) user@nanite:~$ pip install numpy
ПРЕДУПРЕЖДЕНИЕ: Директория '/home/user/.cache/pip/http' или её родительская директория не принадлежит текущему пользователю, и кэш был отключен. Пожалуйста, проверьте разрешения и владельца этой директории. Если вы выполняете pip с помощью sudo, вы можете использовать флаг -H от sudo.
ПРЕДУПРЕЖДЕНИЕ: Директория '/home/user/.cache/pip' или её родительская директория не принадлежит текущему пользователю, и кэширование колес было отключено. Проверьте разрешения и владельца этой директории. Если вы выполняете pip с помощью sudo, вы можете использовать флаг -H от sudo.
Сборка numpy
Загружается https://files.pythonhosted.org/packages/d3/4b/f9f4b96c0b1ba43d28a5bdc4b64f0b9d3fbcf31313a51bc766942866a7c7/numpy-1.16.4.zip (5.1MB)
|████████████████████████████████| 5.1MB 942kB/s
Сборка колес для собранных пакетов: numpy
ПРЕДУПРЕЖДЕНИЕ: Сборка колеса для numpy не удалась: [Errno 13] Доступ запрещён: '/home/user/.cache/pip/wheels/6b'
Не удалось собрать numpy
Установка собранных пакетов: numpy
Выполняется setup.py install для numpy ... готово
Успешно установлен numpy-1.16.4
ОБНОВЛЕНИЕ
Разрешения:
(deep_learning) user@nanite:~$ ls -l /home/user/.cache/pip
итого 12
drwx------ 5 root root 4096 Июн 28 22:31 http
-rw-r--r-- 1 root root 70 Июн 28 22:19 selfcheck.json
drwxr-xr-x 3 root root 4096 Июн 28 22:08 wheels
(deep_learning) user@nanite:~$ ls -l /home/user/.cache/
итого 84
drwx------ 3 user user 4096 Апр 21 07:38 chromium
drwx------ 2 user user 4096 Июн 28 18:02 compizconfig-1
-rw-r--r-- 1 user user 20480 Июн 28 22:16 event-sound-cache.tdb.ebe5a0d15af94384af2e1f235d4e00f0.aarch64-unknown-linux-gnu
drwx------ 8 user user 4096 Апр 21 07:32 evolution
drwxr-xr-x 2 user user 4096 Апр 21 19:24 fontconfig
drwxr-xr-x 7 user user 4096 Апр 22 07:33 gnome-software
drwxr-xr-x 2 user user 4096 Июн 28 19:51 gstreamer-1.0
drwxr-xr-x 3 user user 4096 Апр 21 07:32 ibus
drwxr-xr-x 2 user user 4096 Апр 21 07:32 ibus-table
-rw-r--r-- 1 user user 0 Апр 21 21:47 motd.legal-displayed
drwxr-xr-x 4 root root 4096 Июн 28 22:19 pip
drwx------ 5 user user 4096 Апр 21 19:16 thumbnails
drwxr-xr-x 3 user user 4096 Апр 21 08:30 totem
drwxr-xr-x 2 user user 4096 Апр 22 07:57 unity-lens-photos
drwxr-xr-x 2 user user 4096 Апр 22 07:58 unity-lens-video
drwxr-xr-x 2 user user 4096 Апр 21 07:33 update-manager-core
drwx------ 2 user user 4096 Июн 28 18:03 wallpaper
-rw-r--r-- 1 user user 11 Июн 28 10:40 zeitgeist-vacuum.stamp
(deep_learning) user@nanite:~$
ПРЕДУПРЕЖДЕНИЕ: Директория
'/home/user/.cache/pip/http'
или её родительская директория не принадлежит текущему пользователю, и кэш был отключен. Пожалуйста, проверьте разрешения и владельца этой директории. Если вы выполняете pip с помощью sudo, вы можете использовать флаг -H от sudo.ПРЕДУПРЕЖДЕНИЕ: Директория
'/home/user/.cache/pip'
или её родительская директория не принадлежит текущему пользователю, и кэширование колес было отключено. Проверьте разрешения и владельца этой директории. Если вы выполняете pip с помощью sudo, вы можете использовать флаг -H от sudo.
Сообщение об ошибке довольно прямолинейно: оно говорит, что /home/user/.cache/pip
не принадлежит текущему пользователю. Оно указывает вам проверить разрешения и владельца этой директории.
Это вы можете сделать с помощью ls -l /home/user/.cache/pip
.
Она должна, как (почти?) все файлы в домашней директории, принадлежать пользователю. Если она не принадлежит пользователю, измените владельца с помощью
sudo chown -R $USER:$USER /home/user/.cache/pip
Здесь нам нужно использовать sudo
, так как пользователи обычно не могут изменять владельца файлов.
Ошибка “доступ запрещён” означает, что вам нужно использовать sudo
перед командой установки.
sudo pip install numpy
Это должно сработать.
Ответ или решение
Ошибка установки NumPy: Полный анализ и решения
Введение
Установка NumPy в виртуальной среде Python важна для многих разработчиков и ученых в области данных. Однако, как видно из приведенных логов, процесс установки может быть сопряжен с предупреждениями и ошибками, которые могут вызвать беспокойство. В данном ответе мы подробно рассмотрим проблемы, возникающие при установке, предложим тесты для проверки установки и предоставим рекомендации для улучшения команды установки.
1. Проблемы, связанные с предупреждениями и ошибками
Предупреждения, указанные в логе, могут быть разделены на несколько категорий:
-
Проблемы с правами доступа:
- Предупреждения о том, что директория
/home/user/.cache/pip/http
и ее родительская директория не принадлежат текущему пользователю. Эти предупреждения указывают на проблемы с правами доступа, которые могут помешать кэшу pip работать должным образом. Если pip не может кэшировать пакеты, это может замедлить будущие установки, так как каждый раз придется загружать файлы заново.
- Предупреждения о том, что директория
-
Ошибка при сборке колес:
- Сообщение об ошибке
[Errno 13] Permission denied: '/home/user/.cache/pip/wheels/6b'
указывает на то, что pip не может записать временные файлы в указанную директорию. Это может означать, что даже при успешной установке NumPy могут возникнуть проблемы с производительностью и кешированием в будущем.
- Сообщение об ошибке
Хотя установка NumPy в конечном итоге завершилась успешно, данные предупреждения и ошибки могут указывать на потенциальные риски и проблемы с производительностью.
2. Тест для подтверждения правильности установки
Чтобы проверить правильность установки и отсутствие проблем, можно выполнить следующие тесты:
-
Проверка версии NumPy:
Запустите Python в вашей виртуальной среде и выполните следующий код:import numpy as np print(np.__version__)
Это должно вывести версию NumPy, которая была установлена. Если вы видите версию без ошибок, это означает, что библиотека была установлена корректно.
-
Запуск небольшого теста:
Также рекомендуется провести небольшой тест на функциональность NumPy:a = np.array([1, 2, 3]) print(a + 1) # Ожидаемый вывод: [2 3 4]
Если результат верен, это подтверждает, что NumPy функционирует как положено.
3. Как улучшить команду установки
Чтобы избежать подобных проблем в будущем, вы можете предпринять следующие шаги при установке пакетов:
-
Используйте флаг
--no-cache-dir
: Это предотвратит использование каталога кеша pip, что может помочь обойти проблемы с правами доступа:pip install numpy --no-cache-dir
-
Исправьте права на каталоги pip: Если вы получаете ошибки из-за прав доступа, измените владельца кэш-директории pip, чтобы ваш пользователь имел доступ:
sudo chown -R $USER:$USER /home/user/.cache/pip
-
Избегайте использования
sudo
с pip: Использование sudo может привести к проблемам с правами доступа в виртуальных окружениях. Всегда старайтесь устанавливать пакеты в активированном виртуальном окружении.
Заключение
Установка NumPy может вызвать некоторые проблемы, связанные с правами доступа и кэшированием. Понимание этих проблем и управление ими поможет вам избежать неприятных ситуаций в будущем. Используя приведенные тесты и улучшенные команды установки, вы сможете гарантировать, что ваша установка будет успешной и эффективной.