Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

pip & virtuaenv

with 9 comments

Вирішив коротенько занотувати найновіший метод встановлення пітонячих пакетів. Він дає багато переваг для розробника, бо в випадку коли щось поламалось можна знести все нафіг і почати спочатку. Для 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 і зробити так щоб він сам свої залежності ставив.

Advertisements

Written by bunyk

Листопад 7, 2012 at 01:38

Оприлюднено в Кодерство

Tagged with

Відповідей: 9

Subscribe to comments with RSS.

  1. В NixOS (і в пакетному менеджері nix) вийшла цікава ситуація з пакетами Хаскеля та Пайтона. Для кожного з них є свій менеджер додаткових бібліотек (cabal і pip відповідно), але розробники пішли далі і створили уніфікований менеджер пакетів\бібліотек, на цей раз централізований.

    За рахунок потужного механізма пакетів їм вдалося користуватись можливостями virtualenv-а без самого virtualenv-а. Причому можна створити не тільки профіль бібліотек під проект, а навіть профіль програм під проект.

    Єдине що шкода – розібратись з цією системою поки-що складно.

    danbstt

    Листопад 7, 2012 at 09:23

    • А що таке профіль програм і профіль бібліотек?

      bunyk

      Листопад 8, 2012 at 19:05

      • В NixOS немає такого поняття як глобальний простір імен. Будь-яка програма повинна бути включена хоча б в один профіль. Відповідно, між профілями можна перемикатись, тобто однією командою змінювати список доступного ПЗ.

        Щодо профілю бібліотек – це те саме, що і профіль програм, тільки для бібліотек, доповнень (котрих багато у Хаскеля та Пайтона, наприклад).

        Жаль, що розробники мало приділяють уваги документуванню можливостей NixOS, тому в маси ця система не вийде поки-що. Навіть я не можу пояснити, як воно все докупи там складається.

        danbstt

        Листопад 8, 2012 at 19:55

  2. Можна зробити це все простiше та активiзувати середовище через virtualenvwrapper, раджу спробувати.

    Roman Semirook (@semirook)

    Листопад 12, 2012 at 17:46

  3. bunyk-xubuntyk 😀

    dmytrish

    Листопад 15, 2012 at 18:21

    • Ти ще не знайомий з моїм комп’ютером? 🙂 А твого як звуть?

      bunyk

      Листопад 15, 2012 at 20:56

  4. Все працює чудово доти, поки всі пакети написані виключно на пітоні. Якщо компілювати не хочеться, а підходящий пакет може бути встановлено в системі (подібна ситуація цілком реальна, якщо використовується Twisted, PyWin, zope і подібні), краще скористатись флагом ’–system-site-packages’, який додасть в область видимості пакети, встановлені системно.

    Jolly Roger

    Листопад 20, 2012 at 14:27

  5. Спасибо за инструкцию. Попробую её вместо советов из http://wiki.osqa.net/display/docs/Installing+OSQA+on+AlwaysData . О результатах отпишусь 🙂

    AntonK

    Квітень 8, 2013 at 20:48


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: