Является ли `sudo pip install` все еще нарушенной практикой?

Я новичок в Ubuntu, поэтому, пожалуйста, несите меня. Я установил pip с помощью этой команды: sudo apt-get -y install python-pip. Затем я установил NLTK, используя команду на своем веб-сайте, которая была: sudo pip install -U nltk. Но затем я наткнулся на этот вопрос, который говорит, что все, что я делал, было «нарушенной практикой». Линия, которая поразила меня больше всего, заключалась в том, что использование sudo pip по своей сути ошибочно и что слишком высокая сила pip может повредить файлы операционной системы. Может ли кто-нибудь подтвердить это требование?

Примечание. Я использовал только sudo, потому что, когда я попробовал команду apt-get -y install python-pip, он дал мне 2 ошибки:

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
1
задан 23 May 2017 в 15:39

3 ответа

Вы должны использовать sudo для установки pip с apt (sudo apt install python-pip), но, как указано в ответе edwinksl, вы не должны использовать sudo для установки пакетов с помощью pip, вы должны использовать pip install --user <package> для установки только для своих пользователь, или используйте virtualenv, чтобы еще больше ограничить область действия пакета.

Apt устанавливает пакеты из репозиториев Ubuntu, тогда как pip устанавливает загруженные пользователем пакеты из PyPi, которые могут быть вредоносными.

8
ответ дан 23 May 2018 в 07:49

И для более умеренного ответа:

Вы действительно всегда должны sudo apt-get install ..., именно так инструмент был разработан для работы. Использование sudo [-H] с pip install возможно и в режиме & amp; необязательно, в зависимости от того, что именно вы хотите сделать (и, следовательно, «разногласий»).

Один из девизов Python: «Должен быть один - и желательно только один - простой способ сделать это». И, как большинство девизов, он разбит сардонической ликованием, казалось бы, на всевозможные возможности. (Вот почему девизы существуют, я думаю.) К сожалению, по моему самому скромному мнению, экосистема Python состоит из многих противоречивых «жестких и быстрых» правил, никогда не нарушаемых ... за исключением случаев, когда «yada yada yada» (дьявол , детали и т. д.). Почти во всех случаях это связано с исторической эволюцией языка & amp; (и кто хочет / нуждается в уроке истории, когда они просто хотят заняться своей работой), - но также может быть связано с различиями в платформах Mac / Win / * Nix (например, Unix / Linux имеет аналогичный менталитет, но имеет преимущество десятилетий большей зрелости.) Поэтому, пожалуйста, возьмите все эти «нарушенные практики» и amp; «неотъемлемо неправильные» груз-культисты с огромным щепоткой соли. Некоторые на самом деле имеют в виду хорошо. (Другими являются просто, ну, значит.)

Прежде всего, вместо базовых «инсталляторов для каждого пользователя» вы почти всегда будете любить виртуальный, потому что на самом деле это, вероятно, то, что вы закончите нуждающихся в помощи. Так что теперь вы можете начать с этого. «Должен быть один - и желательно только один - простой способ сделать это». это делается точно, «зависит» (см. девиз Python, выше). Если вы используете Conda (в основном для Mac и Windows), он будет настроен на девизы Python . Если использовать «чистый» Python [sic], это зависит от того, какая версия & amp; что у вас есть python, но virtualenvwrapper очень удобен.

Во-вторых, как встречный пример правила «never sudo», вы можете предпочесть sudo -H pip install -U numpy, что совершенно нормально, даже выгодно, поскольку он позволяет избежать загрузки / переустановки / ведение больших библиотек, где вы хотите или хотите только одну версию, в каждый virtualenv отдельно. Большие, популярные рамки, такие как scikit-learn, NumPy, matplotlib, SciPy, pandas и т. Д., Могут быть установлены один раз и amp; done и virtualenvwrapper . Кроме того, ваш локальный дружественный sys-администратор может получить эти установки для пользователя [sic] в системе - и, очевидно, они будут делать это через sudo, а также, например, для более сложных установок, таких как TensorFlow.

И, наконец, если вы устанавливаете какую-то случайную стороннюю библиотеку, которая делает такой-то (Twitter API, перетасовка текста, форматирование кода и т. д.), тогда Я полностью согласен - не устанавливайте его как root через sudo. Конечно, установите его в качестве текущего пользователя. Но просто помните, что ваша учетная запись пользователя имеет все ваши действительно важные вещи.

3
ответ дан 23 May 2018 в 07:49

Нет, это правильно. Я не могу подтвердить это требование. Я всегда использую sudo -H с pip. pip может повредить файлы операционной системы только apt. Только не используйте sudo с pip, если вы хотите установить только для этого пользователя.

-1
ответ дан 23 May 2018 в 07:49

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

Похожие вопросы: