Большинство новичков в Python не знают, как настроить среду разработки, которая соответствует последним стандартам, используемым профессиональными программистами, поэтому этот урок научит вас, как правильно создавать полностью работающую среду разработки Python, используя лучшие в отрасли передовые практики.
Виртуальные среды
Я использую так много библиотек для своих личных проектов, три среды разработки веб-приложений и многие другие, которые я хотел бы изучить в ближайшем будущем. Совершенно очевидно, что серьезный проект в Python зависит от других пакетов, написанных другими разработчиками. Если вы разработчик Django, я уверен, что вы используете South для выполнения автоматической миграции баз данных, Django Debug Toolbar для сбора различной отладочной информации о текущем запросе / ответе, Celery для выполнения операций в реальном времени и планирования. , и так далее.
Например, я часто использую requests
пакетов для своих проектов, и веб-приложение Django, над которым я сейчас работаю, зависит от версии 2.3.0. Согласно официальной документации, последняя версия этого пакета — версия 2.5.1. Допустим, я установил последнюю версию библиотеки на мою машину с Ubuntu, потому что она мне нужна для другого проекта, и, кажется, все работает нормально, пока я не попытаюсь использовать мой старый проект, который работал нормально с 2.3.0. Внезапно все сломано. Что произошло? Может быть, API последней версии запросов изменился с версии 2.3.0? Причина не имеет значения в этом пункте, поскольку мой старый проект сломан и больше не работает.
Конфликт между двумя проектами был создан. Они используют одну и ту же библиотеку, но требуют разных версий.
Инструмент virtualenv является решением этой проблемы.
virtualenv
Virtualenv помогает разрешать конфликты в зависимости от проекта, создавая изолированные среды, которые могут содержать все положительные стороны, необходимые программистам Python для разработки своих проектов. Виртуальная среда, созданная с помощью этого инструмента, включает в себя свежую копию самого двоичного файла Python, а также копию всей стандартной библиотеки Python.
Чтобы создать виртуальную среду для вашего проекта Python, введите команду virtualenv
а затем имя, которое вы хотите дать виртуальной среде, как показано ниже.
virtualenv virt1
Очень важно знать, что каждый раз, когда вы хотите использовать созданную виртуальную среду, вам необходимо активировать ее. Следующая команда делает это:
source virt1/bin/activate
Все, что установлено в каталоге virt1
, не повлияет на глобальные пакеты или общесистемные установки, что позволит избежать конфликтов зависимостей.
Если я сейчас установлю самую новую версию запросов, старая не будет удалена. Новый устанавливается исключительно в виртуальной среде.
pip -I install requests
Приведенная выше команда производит следующий вывод:
Downloading/unpacking requests Downloading requests-2.5.1-py2.py3-none-any.whl (464kB): 464kB downloaded Installing collected packages: requests Successfully installed requests Cleaning up...
зернышко
Слово в команде pip
выше — это менеджер пакетов, который очень полезен, когда вы хотите распространить свой проект среди других, так как он позволяет разработчику устанавливать все необходимые пакеты с файлом require.txt.
Например, другой разработчик может активировать виртуальную среду, а затем выполнить следующую команду, чтобы установить зависимости проекта:
pip install -r requirements.txt
Чтобы создать файл зависимостей вашего проекта, вы запускаете следующую команду.
pip freeze > requirements.txt
Инструмент pip также можно использовать для удаления пакета с вашего компьютера:
pip uninstall some-package-name
Можно установить pip для всей системы с помощью менеджера пакетов Python по умолчанию:
sudo easy_install pip
А затем используйте pip для установки virtualenv
:
sudo pip install virtualenv
После того, как среда создана
Как только виртуальная среда активируется, приглашение вашего терминала изменится, чтобы показать пользователю, в каком каталоге он работает:
(virt1)oltjano@baby:~/Desktop/myproject$
Следующая команда позволит вам деактивировать виртуальную среду:
deactivate
Вы можете использовать команду which
для проверки двоичного файла Python, который используется в текущей виртуальной среде.
which python
Если все работает хорошо, вы должны получить что-то похожее на следующий результат.
/home/oltjano/Desktop/myproject/virt1/bin/python
Если вы deactivate
и which
снова, вы должны получить другой вывод.
/usr/bin/python
Это связано с тем, что при работе в виртуальной среде используется двоичная копия, размещенная в этой среде. То же самое относится и к пакетам.
Мы можем использовать опцию -p
при работе с virtualenv, чтобы использовать конкретную версию Python, которая глобально установлена на машине.
Например, следующую команду можно использовать для создания виртуальной среды virt2
с Python3, если на вашем компьютере установлен Python3.
virtualenv -p /usr/bin/python3 virt2
А для удаления виртуальной среды вы используете команду rm -r
как и для любого другого каталога, который вы хотите удалить.
rm -r virt2
virtualenvwrapper
Virtualenvwrapper предоставляет очень полезные команды, которые делают работу с виртуальными средами еще проще. Например, команду workon
можно использовать для активации и работы в виртуальной среде:
workon virt1
Он также легко устанавливается с помощью пипса.
pip install virtualenvwrapper
Мне нравится хранить все мои виртуальные среды в одном месте. Для этого выполните следующую команду, чтобы создать новый каталог для ваших виртуальных сред.
mkdir ~/.virtualenvs
Затем установите WORKON_HOME
в ~/.virtualenvs
как показано ниже.
export WORKON_HOME=~/.virtualenvs
Как только это будет сделано, мы можем открыть файл .bashrc
в домашнем каталоге с помощью текстового редактора и добавить в конец следующую строку.
. /usr/local/bin/virtualenvwrapper.sh
Затем мы перезагружаем файл .bashrc
с помощью следующей команды.
source ~/.bashrc
Теперь команда mkvirtualenv
может быть использована для создания новых сред, размещенных по умолчанию в этой папке.
mkvirtualenv sitepoint
Мы можем легко активировать виртуальную среду с помощью команды workon
:
workon sitepoint
Команда для деактивации виртуальной среды такая же, как та, которую мы использовали ранее.
deactivate
Очень легко переключаться между различными виртуальными средами. Например, для workon
другой виртуальной среде:
workon another_virtualenv
Чтобы удалить виртуальную среду, необходимо использовать команду rmvirtualenv
.
rmvirtualenv sitepoint
Autoenv
Другой очень полезный совет — тот, который помогает автоматически активировать виртуальные среды, когда один компакт-диск входит в их проект.
Для этого файл .env
должен быть помещен в каталог проекта.
cd sitepointproject vim .env
Внутри файла .env
мы вставляем следующую строку.
workon name_of_virtualenv_here
Инструмент autoenv поможет нам автоматически активировать среду при переходе в каталог, содержащий файл .env
. Чтобы установить его, мы его клонируем.
git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
Затем мы используем echo
для размещения другой строки внутри файла .bashrc
. Вы также можете использовать текстовый редактор, чтобы сделать это.
echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc
Теперь каждый раз, когда вы cd
в проект, виртуальная среда активируется автоматически.
Вывод
В этом уроке мы узнали о некоторых интересных способах повышения эффективности при работе с виртуальными средами Python. Инструменты есть — используйте их и улучшите свой рабочий процесс. Используете ли вы другие интересные подходы в вашем рабочем процессе разработки Python? Дайте нам знать!