При установке пакетов python всегда следует использовать виртуальную среду. pip облегчает эту задачу, добавляя некоторые настройки в pip.
require-virtualenv
Pip – это инструмент пакетирования для python. Он устанавливает пакеты сторонних разработчиков и является настраиваемым. Один из параметров конфигурации, который я настоятельно рекомендую всем добавить, это require-virtualenv
. Это не позволит pip устанавливать какие-либо пакеты, если у вас не активирован virtualenv.
зачем
Пакеты python часто требуют множество различных зависимостей, иногда пакеты обновляются, а иногда требуют различные версии зависимостей. Если вы устанавливаете все в одном окружении, легко получить проблемы с конфликтом версий, которые очень трудно решить, особенно если ваше системное окружение не может быть легко перезапущено.
PIPX – мое единственное исключение
Мое единственное исключение, которое я помещаю в пакеты системного уровня – это pipx
. pipx
очень удобен, поскольку он управляет виртуальными окружениями за вас и предназначен для утилит командной строки, которые без него оказались бы в системном env или потребовали бы от вас ручного управления виртуальными окружениями.
конфигурация pip
Конфиг вашего pip может быть найден в ~/.pip/pip.conf
или
отредактируйте один из этих файлов вручную.
pip config set global.require-virtualenv True
Теперь вы должны увидеть следующее в вашем ~/.config/pip/pip.conf
[global] require-virtualenv = True
pip config debug
Если вы хотите узнать, где pip ищет конфигурацию в вашей системе, и какие файлы задают определенную конфигурацию, вы можете использовать pip config debug
, чтобы найти ее.
❯ pip config debug
env_var: env: global:
/etc/xdg/xdg-awesome/pip/pip.conf, exists: False
/etc/xdg/pip/pip.conf, exists: False
/etc/pip.conf, exists: False
site:
/home/waylon/git/waylonwalker.com/.venv/pip.conf, exists: False
user:
/home/waylon/.pip/pip.conf, exists: False
/home/waylon/.config/pip/pip.conf, exists: True
global.require-virtualenv: True
спас мой бекон
Эта настройка недавно спасла меня, когда я изменил файл .envrc
, моя виртуальная среда деактивировалась, и когда я пошел устанавливать что-то с помощью pip, он выдал мне ошибку, что она не активна. Подобные ситуации – простой способ загрязнить вашу систему пакетами, которые ей не нужны.
TLDR
Выполните эту команду в командной строке, чтобы не загрязнять системное окружение по ошибке перед запуском любой команды pip.
pip config set global.require-virtualenv True