sudo
используется в системах Unix/Linux для выполнения задач в качестве другого пользователя, используя их разрешения, такие как возможность записи в определенные каталоги. Если вы не укажете пользователя эмулировать, например, при запуске
sudo pip install flask
вы пытаетесь запустить команду в качестве системного администратора, известного как root
во многих средах. Вам будет предложено ввести пароль администратора (который может быть вашим собственным, если вы предоставили свои права администратора пользователя), то указанная команда запускает в качестве этого пользователя, что означает, что он имеет доступ на чтение/запись практически по каждому файлу и каталог в системе (есть некоторые исключения, но они в основном являются угловыми и не очень важными здесь). Это означает, что вы должны быть очень осторожным при использовании sudo
, как ошибка, как маленький, как единое пространство действительно может натворить: сравнить
sudo rm -rf /usr/local/lib/python3.4/dist-packages/numpy*
с
sudo rm -rf /usr /local/lib/python3.4/dist-packages/numpy*
Смотрите, что пространство между /usr
и local/
? Вы только что начали удалять всю папку /usr
, которая содержит большую часть жизненно важных файлов и программ в системе. Надеюсь, у вас есть резервная копия! Теперь это не значит, что вам нужно напугать до смерти sudo
, но вы, do, должны иметь здоровое уважение к нему.
Устройства Python имеют системный уровень (да, я знаю, что есть исключения), что означает, что вам необходимо использовать sudo
для их модификации, например, при установке сторонних модулей с pip
. Если вы запустите
ls -l /usr/local/lib/python3.4
вы увидите что-то вдоль линий
drwxrwsr-x 125 root 4096 Nov 3 00:40 dist-packages
показывая, что каталог вы пытаетесь установить, чтобы с pip
принадлежит root
, поэтому использование sudo
является необходимо.
Теперь существует несколько способов обойти это. Если вам это нравится, и не против изменения глобальных пакетов системы, продолжайте использовать sudo
с pip
(на самом деле вам может понадобиться sudo -H ...
, если вы получите небольшое сообщение в желтом в начале о разрешениях в ваш домашний каталог). Все ваши модули будут установлены до /usr/local/lib/python3.4/dist-packages
и будут доступны для всех пользователей системы.
Второй вариант заключается в использовании --user
вариант Пипа, который создаст lib/python3.4/site-packages
иерархию в вашем домашнем каталоге (~
) и хранить все установленные модули там, вместе со сценариями в ~/bin
(которые вы должны добавить в свой $PATH
. Преимущество из этого метода заключается в том, что вам не нужно использовать sudo
, поэтому вы не будете случайно перезаписывать зависящие от системы модули, где для других программ требуется выполнение определенных версий. Недостаток заключается в том, что установленные модули доступны только вам , так что вы может столкнуться с проблемами, если, например, ваш веб-сервер пытается запустить Flask как сам и не может читать исходные файлы. Однако t Нет ничего плохого в том, что небольшое редактирование файла config не может исправить. Это мое рекомендуемое решение для большинства пользователей.
Третий вариант - использовать виртуальные среды, такие как virtualenv
. Это создаст пользовательскую установку Python в выбранном вами месте с отдельнымиpython
исполняемым файлом и site-packages
иерархией (есть варианты того, хотите ли вы ссылаться на или использовать репозиторий dist-packages
). Вы можете сделать pip install
пакеты непосредственно в virtualenv и сделать так много окружений, как ваши маленькие сердечные пожелания, каждый из которых имеет несколько разные версии различных зависимостей, например, чтобы вы могли более эффективно тестировать свои программы. Вы можете включить и выключить виртуальные среды, например, например, вы могли бы использовать пару на разных вкладках терминала, например, параллельно тестировать. Это моя вторая рекомендация, потому что есть (немного) больше работы, связанной с активацией и использованием среды, и вы можете запутаться в том, над чем работаете, если не очень хорошо их именовать. Недостатки включают отсутствие доступности в системе, как и второй вариант, и тот факт, что виртуальную среду необходимо активировать вручную перед использованием.
Итак, взгляните на варианты и посмотрите, что лучше всего подходит для вашей системы и вашей конкретной ситуации. Удачи!
Я предполагаю, что вы используете Linux/Unix/вариант того же самого. Это не способ сделать это. Я предлагаю вам прочитать ['virtualenv'] (http://docs.python-guide.org/en/latest/dev/virtualenvs/). Есть большой шанс, что вы испортите установку системы Python. – Manhattan
В основном 'pip install --user package-name', который помещает ваш пакет в' $ HOME/.local/lib/pythonx.y/site-packages/'. См. Http: // stackoverflow.com/questions/7143077/how-can-i-install-packages-in-my-home-folder-with-pip – gongzhitaao