2014-02-09 3 views
2

Я относительно новичок в Python и использую его в очень маленьком скрипте синтаксического анализа XML. Я полностью запутался в отношении различных версий Python и их менеджеров пакетов.Управление пакетами в Python 3.3 - какие инструменты лучше всего использовать?

Я использую Ubuntu 13.10, который, как представляется, поставляется как с Python2.7, так и с Python3.3, предварительно установленным из новой установки.

Вне virtualenv у меня есть доступ к обеим версиям из строки:

>which python 
/usr/bin/python 

>which python2 
/usr/bin/python2 

>which python3 
/usr/bin/python3 

первые два слинкованы в то же python2.7 двоичный и третий к python3.3 двоичному. Что все имеет смысл.

Я также понимаю, что python3.3 приходит с pyvenv для создания virtualenvs для python3.3

>pyvenv-3.3 mynewproject 

создает новую виртуальную среду с каталогом бен и «самодостаточным» переводчиком python3.3 и т.д. . Чтобы использовать эту среду, я просто:

>source <path-to-mynewproject>/bin/activate 

Все прекрасно. Делает совершенный смысл. Теперь приходит путаница. Использовать easy_install? Пип? Setup.py? Распределить? Каковы все эти несметные менеджеры пакетов? Где я их получу? Работают ли они с Python2.7 или Python3.3? Или оба? Какие из них будут работать в моем новом virtualenv? Мне все равно?

Короче говоря, учитывая, что я только собираюсь заниматься разработкой Python3.3 +, но также учитывая, что я не хочу нарушать свою систему, которая, несомненно, нуждается в пакетах Python2.7, какова каноническая (лучше всего) , одобренный, поддержанный) способ для меня управлять пакетами.

Серьезно, что за черт? Полностью смущен.

Благодарим за оказанную помощь.

+2

Рекомендуемая литература: [Руководство Автостопом упаковка - упаковка, экосистема] (http://guide.python-distribute.org/introduction.html#the-packaging-ecosystem) , –

ответ

4
  1. изолят все с virtualenvs
  2. pip и easy_install являются менеджеры пакетов, которые можно использовать оба из них, но я предпочитаю пип
  3. setup.py это просто скрипт для Distutils, pip и easy_install как использовать setup.py для установки пакетов ,

Если вы запустите свой python в virtualenvs, это предотвратит удаление или обновление пакетов, которые нарушат вашу систему. Тогда выбор между pip и easy_install не так ясен. В теории pip новее, но по некоторым причинам способ установки пакетов может работать на pip, а не на easy_install. Эти проблемы возникают, когда вам приходится иметь дело с родными библиотеками, которые необходимо скомпилировать ... Трудно сказать, какой из них лучше, но тот, который работает, должен делать трюк, так как они все равно устанавливают пакет в том же каталоге.

Нет необходимости устанавливать пакеты с setup.py, если они не доступны в pypi. pip также происходит для установки пакетов с setup.py, если вы передадите ему каталог, в котором он находится.

Если вы делаете пакет, убедитесь, что он установлен с distutils, используя setup.py.Затем вы можете отпустить его до pypi.

Кроме того, как я знаю, что многие учебники не использует virtualenvs и могут даже написать в их учебниках таких вещей, как:

sudo pip install .. 
sudo easy_install .. 

Обратите внимание, что если вы используете virtualenv вы никогда не должны использовать Sudo и если вы используете sudo, возможно, что он установит всю систему пакетов, поскольку она не будет запущена от пользователя в virtualenv, а из root.

Рекомендуемая литература по Lukas Graf: http://guide.python-distribute.org/introduction.html#the-packaging-ecosystem

+0

Учитывая сложность ситуации с упаковкой Python, это очень хороший ответ - я не мог написать полезный ответ в стольких словах ;-) –

+0

@Loic - большое спасибо. Нужна ли мне другая версия Pip for Python2.7 и Python3.3? Я устанавливаю его только один раз, так что, если он используется вне virutalenv, он будет устанавливать пакеты в общесистемный, но если virtualenv будет активирован, он будет установлен только для этого env? Это то, как это работает или мне нужно настроить Pip для использования с virtualenv? Еще раз спасибо – Zuriar

+0

@ user3231690, когда вы создаете virtualenv, он должен установить pip byelf. Да, так оно и работает. Также одно примечание, если вы видите учебники с запросом 'sudo pip ...', если вы работаете в virtualenv, не используйте sudo. 'sudo' изменит пользователя на« root »и установит всю систему. –

Смежные вопросы