Вирішив коротенько занотувати найновіший метод встановлення пітонячих пакетів. Він дає багато переваг для розробника, бо в випадку коли щось поламалось можна знести все нафіг і почати спочатку. Для Python3 звичайно.
Інтернет зберігає багато інформації про яйця. Яйця застарілі. Як і easy_install
. Тому що ще простіше ніж написати easy_install
можна написати pip install
. setuptools
застарілий, замість нього треба використовувати distribute
.
Разом з pip
радять користуватись virtualenv
. Це штука яка дозволить тримати окремий набір пакетів для кожного проекту, тримати їх в довільній директорії, і ставити без прав суперкористувача.
Щоб поставити virtualenv
вибираємо каталог в якому він стоятиме, і пишемо:
wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
Готово! Тепер ним можна користуватись.
Для того щоб поставити pip і створити нове середовище наприклад для python3 пишемо:
python3 virtualenv.py env_name # замість env_name можна підставити щось довільне
Що накрутіше, цей скрипт працює і для Python 2, тільки в створеному середовищі ставить setuptools
замість distutils
.
Після того як він трохи попрацює копіюючи файли, в нас з’явиться каталог env_name
. Для того щоб активувати середовище, потрібно перейти в каталог, і запустити bin/activate
bunyk@xubuntyk:~/python$ cd env_name/ bunyk@xubuntyk:~/python/env_name$ source bin/activate (env_name)bunyk@xubuntyk:~/python/env_name$
Все, тепер в дужках ми бачимо що середовище активовано. Це означає що команди pip
і python
тепер локальні. pip install
можна запускати без sudo
.
Наприклад:
(env_name)bunyk@xubuntyk:~/python/env_name$ pip install bpython downloading blablabla installation blablabla .... (env_name)bunyk@xubuntyk:~/python/env_name$ which bpython /home/bunyk/python/env_name/bin/bpython (env_name)bunyk@xubuntyk:~/python/env_name$ which python /home/bunyk/python/env_name/bin/python
Як бачимо всі пакети не вилазять за межі створеного їм середовища.
Щоб перейти в нормальний режим роботи, пишемо:
(env_name)bunyk@xubuntyk:~/python/env_name$ deactivate
І пакетів як і не було, хоча Python на місці:
bunyk@xubuntyk:~/python/env_name$ which bpython bunyk@xubuntyk:~/python/env_name$ which python /usr/bin/python
Далі спробую розібратись як створити пакет залежний від httplib2 і зробити так щоб він сам свої залежності ставив.
Filed under: Кодерство Tagged: Python