Блог о Gentoo и около-линуксовым штукам

31 июля 2016 г.

virtualenv - отличный способ не засорять систему пакетами python

17:32 Опубликовал Дмитрий Исаенко Нет комментариев
При разработке на python часто требуется установка дополнительных пакетов. Традиционно для этого используется утилита pip (dev-python/pip). Отсюда всплывает вопрос, а может стоит оградить себя от установки пакетов через pip прямиком в систему? И как это сделать?
Именно для этого придумали утилиту virtualenv, которая выступает генератором виртуальных сред python. Кратко рассмотрим как это работает.
Для начала установим virtualenv:
# emerge dev-python/virtualenv
Теперь создадим каталог с окружением:
$ virtualenv env
Using base prefix '/usr'
New python executable in env/bin/python3.4
Also creating executable in env/bin/python
Installing setuptools, pip, wheel...done.
После этого, у нас появилась возможность использовать pip из этого каталога. Установим туда какой-нибудь пакет, чтобы посмотреть куда он установится:
$ env/bin/pip install python-telegram-bot
Collecting python-telegram-bot
  Downloading python_telegram_bot-5.0.0-py2.py3-none-any.whl (130kB)
    100% |████████████████████████████████| 131kB 3.7MB/s
Collecting certifi (from python-telegram-bot)
  Downloading certifi-2016.2.28-py2.py3-none-any.whl (366kB)
    100% |████████████████████████████████| 368kB 709kB/s
Collecting urllib3>=1.10 (from python-telegram-bot)
  Downloading urllib3-1.16-py2.py3-none-any.whl (98kB)
    100% |████████████████████████████████| 102kB 342kB/s
Collecting future>=0.15.2 (from python-telegram-bot)
  Downloading future-0.15.2.tar.gz (1.6MB)
    100% |████████████████████████████████| 1.6MB 424kB/s
Building wheels for collected packages: future
  Running setup.py bdist_wheel for future
  Stored in directory: /home/username/.cache/pip/wheels/11/c5/d2/ad287de27d0f0d646f119dcffbac1f4e63df128f28ab0a1bda
Successfully built future
Installing collected packages: certifi, urllib3, future, python-telegram-bot
Successfully installed certifi-2016.2.28 future-0.15.2 python-telegram-bot-5.0.0 urllib3-1.16
You are using pip version 7.1.2, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command. 
Там же есть валидатор кода pep8 (конечно, если он установлен dev-python/pep8). Запускается он аналогично.
$ env/bin/pep8
Можно перенести настройки этого virtualevn на всю систему - для этого нужно сделать
$ . env/bin/activate
или
$ source env/bin/activate
Для того, чтобы "выключить" эти настройки, нужно написать
$ deactivate
Для того, чтобы использовать эту среду в своих приложениях, нужно добавлять в sh-скрипты следующую форму:
#!/usr/bin/env python
<python code here>
Или же просто натравливайте интерпретатор python из директории на свои *.py скрипты.

На этом всё.

0 коммент.:

Отправить комментарий