Статьи

Виртуальные среды в Python Made Easy

Большинство новичков в Python не знают, как настроить среду разработки, которая соответствует последним стандартам, используемым профессиональными программистами, поэтому этот урок научит вас, как правильно создавать полностью работающую среду разработки Python, используя лучшие в отрасли передовые практики.

Python Logo

Виртуальные среды

Я использую так много библиотек для своих личных проектов, три среды разработки веб-приложений и многие другие, которые я хотел бы изучить в ближайшем будущем. Совершенно очевидно, что серьезный проект в 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? Дайте нам знать!