Python 2.7 в Ubuntu - PullRequest
       8

Python 2.7 в Ubuntu

72 голосов
/ 08 марта 2011

Я новичок в Python и работаю на машине с Linux (Ubuntu 10.10).Это работает Python 2.6, но я хотел бы запустить 2.7, поскольку он имеет функции, которые я хочу использовать.Меня убедили не устанавливать 2.7 и установить это как мой питон по умолчанию.

Мой вопрос: как мне установить 2.7 и запустить его вместе с 2.6?

Ответы [ 7 ]

108 голосов
/ 08 марта 2011

Я сделал это с pythonbrew на моем компьютере с Ubuntu 10.10.

$ python -V
Python 2.6.6
$ curl -kL https://raw.github.com/utahta/pythonbrew/master/pythonbrew-install | bash
$ . $HOME/.pythonbrew/etc/bashrc
$ pythonbrew install 2.7.1
$ pythonbrew switch 2.7.1
Switched to Python-2.7.1
$ python -V
Python 2.7.1

Я также использовал его для установки Python 3.2 .

10 голосов
/ 19 января 2012

Я недавно перенес Python 2.7 в Debian squeeze. Поскольку Ubuntu 10.10 новее, чем Debian squeeze, если вы можете сделать это на squeeze, вы, безусловно, можете сделать это на Ubuntu. У меня нет доступа к системе Ubuntu 10.10. Если я настрою один, я проверю его и обновлю этот ответ. Итак, вот краткий набросок того, что я сделал на Debian.

Во-первых, общий и очевидный комментарий, но который легко упустить из виду. Не следует слишком серьезно относиться к перечисленным зависимостям сборки пакета Debian. Они могут быть гораздо более конкретными, чем необходимо. Например, программное обеспечение, такое как Python, которое разработано так, чтобы быть переносимым и работать в широком спектре систем, вряд ли будет зависеть от очень специфических версий программного обеспечения. Также могут быть скорректированы зависимости времени выполнения, но это следует делать с большей осторожностью. Однако зависимости времени выполнения в основном генерируются динамически на основе программного обеспечения, которое уже установлено в этой системе, поэтому обычно это не является большой проблемой.

apt-cache policy python2.7
python2.7:
  Installed: 2.7.2-8
  Candidate: 2.7.2-8
  Version table:
     2.7.2-12 0
         50 http://debian.csail.mit.edu/debian/ unstable/main i386 Packages
     2.7.2-8 0
         50 http://debian.csail.mit.edu/debian/ testing/main i386 Packages
 *** 2.7.2-8 0
        100 /var/lib/dpkg/status

При выборе тестовой версии мы получаем

apt-get source python2.7=2.7.2-8

Глядя на debian/control, мы видим следующие строки зависимости сборки.

Build-Зависит: debhelper (> = 5), quilt, autoconf, libreadline-dev, libtinfo-dev, libncursesw5-dev (> = 5.3), tk8.5-dev, zlib1g-dev, blt-dev (> = 2.4z), libssl-dev, libexpat1-dev, sharutils, libbz2-dev, libbluetooth-dev [linux-any], локали [! Armel! Avr32! Hppa! Ia64! Mipsel], libsqlite3-dev, libffi-dev ( > = 3.0.5), поддержка mime, libgpm2 [linux-any], netbase, lsb-release, bzip2, libdb4.8-dev, gdb, python, help2man Build-Depends-Indep: python-sphinx Конфликты сборки: tcl8.3-dev, tk8.3-dev, tcl8.4-dev, tk8.4-dev, python2.7-xml, python-xml, autoconf2.13, libncurses5-dev

Большая часть этого легко выполняется при сжатии. С удобной утилитой apt-show-versions мы попадаем на мою машину

apt-show-versions debhelper quilt autoconf libreadline-dev libtinfo-dev libncursesw5-dev tk8.5-dev zlib1g-dev blt-dev \
libssl-dev libexpat1-dev sharutils libbz2-dev libbluetooth-dev locales libsqlite3-dev \
libffi-dev mime-support libgpm2 netbase lsb-release bzip2 libdb4.8-dev gdb python help2man python-sphinx

autoconf/squeeze uptodate 2.67-2
blt-dev/squeeze uptodate 2.4z-4.2
bzip2/squeeze uptodate 1.0.5-6
debhelper/squeeze-backports uptodate 8.9.13~bpo60+1
gdb/squeeze uptodate 7.0.1-2+b1
help2man/squeeze uptodate 1.38.2
libbluetooth-dev/squeeze uptodate 4.66-3
libbz2-dev/squeeze uptodate 1.0.5-6
libdb4.8-dev/squeeze uptodate 4.8.30-2
libexpat1-dev/squeeze uptodate 2.0.1-7
libffi-dev/squeeze uptodate 3.0.9-3
libgpm2/squeeze uptodate 1.20.4-3.3
libncursesw5-dev/squeeze uptodate 5.7+20100313-5
libreadline-dev/squeeze uptodate 6.1-3
libsqlite3-dev/squeeze uptodate 3.7.3-1
libssl-dev/squeeze uptodate 0.9.8o-4squeeze5
libtinfo-dev not installed
locales/squeeze uptodate 2.11.2-10
lsb-release/squeeze uptodate 3.2-23.2squeeze1
mime-support/squeeze uptodate 3.48-1
netbase/squeeze uptodate 4.45
python/squeeze uptodate 2.6.6-3+squeeze6
python-sphinx/squeeze-backports uptodate 1.0.8+dfsg-2~bpo60+1
quilt/squeeze uptodate 0.48-7
sharutils/squeeze uptodate 1:4.9-1
tk8.5-dev/squeeze uptodate 8.5.8-1
zlib1g-dev/squeeze uptodate 1:1.2.3.4.dfsg-3

Мы видим, что все, кроме libtinfo-dev, доступно в сжатом виде. У меня есть версии squeeze backport debhelper и python-sphinx, но обе они также доступны для Debian Squeeze в версиях, удовлетворяющих требованиям сборки.

Заметьте также, что у меня установлен libncurses5-dev

apt-show-versions libncurses5-dev

libncurses5-dev/squeeze uptodate 5.7+20100313-5

Оба эти пакета соответствуют исходному пакету curses 5.7+20100313-5. Обратите внимание, что libtinfo-dev фактически заменяет libncurses5-dev.

apt-cache show libtinfo-dev

Package: libtinfo-dev
Source: ncurses
Version: 5.9-4
Installed-Size: 279
Maintainer: Craig Small <csmall@debian.org>
Architecture: i386
Replaces: libncurses5-dev (<< 5.9-3)
Depends: libtinfo5 (= 5.9-4)

Не следует ожидать, что Python 2.7 будет разрабатываться на такой специфической версии curses, а на самом деле это не так. Однако, если вы попытаетесь собрать пакеты без удовлетворения зависимости, вы получите

debuild -uc -us

dpkg-checkbuilddeps: Unmet build dependencies: libtinfo-dev
dpkg-checkbuilddeps: Build conflicts: libncurses5-dev
debuild: fatal error at line 1289:
You do not appear to have all build dependencies properly met.
You can use mk-build-deps to generate a dummy package which
Depends on all the required packages, or you can install them
manually using dpkg or apt using the error messages just above
this message.

Итак, необходимо отредактировать debian/control. Обратите внимание, что вам также необходимо аналогичным образом отредактировать файл debian/control.in, в противном случае control файл будет неправильно восстановлен с control.in. Самое простое, что нужно сделать, это просто удалить libncurses5-dev из строки Build-Conflicts и libtinfo-dev из строки Build-Depends, а затем выполните debuild -uc -us снова. Если вы собираетесь установить этот пакет вместе со стандартными пакетами Python 2.6 по умолчанию в Debian squeeze, вы Также необходимо убрать две строки

Conflicts: python-profiler (<= 2.7.1-2)
Replaces: python-profiler (<= 2.7.1-2)

Эти строки есть, потому что 2.7 включает в себя функциональность python-profiler. Если 2.7 является питоном по умолчанию, то python-profiler больше не требуется. Однако, если кто-то устанавливает 2.7 в качестве Python не по умолчанию, это не применить, и python-profiler по-прежнему требуется 2,6.

Это должно успешно скомпилироваться и привести к следующему списку бинарных пакетов.

ls -lah *.deb

-rw-r--r-- 1 faheem staff 289K Jan 12 02:33 idle-python2.7_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 1.1M Jan 12 02:34 libpython2.7_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 2.5M Jan 12 02:34 python2.7_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff  12M Jan 12 02:34 python2.7-dbg_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 4.9M Jan 12 02:34 python2.7-dev_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 6.0M Jan 12 02:33 python2.7-doc_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 692K Jan 12 02:33 python2.7-examples_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 1.7M Jan 12 02:34 python2.7-minimal_2.7.2-8_i386.deb

Наконец, можно установить бинарные пакеты с помощью

dpkg -i python2.7-minimal_2.7.2-8_i386.deb python2.7_2.7.2-8_i386.deb python2.7-dev_2.7.2-8_i386.deb libpython2.7_2.7.2-8_i386.deb 

Иногда dpkg может быть немного затруднительно в отношении удовлетворения зависимостей, когда все они установлены одновременно, поэтому вам может потребоваться запустить apt-get -f install впоследствии, если вы получите ошибки зависимости, или, в качестве альтернативы, установить пакеты в меньшие группы.

5 голосов
/ 23 мая 2011

Что ж, если вам нужно только argparse (вы видели это в одном из ваших комментариев!), Вы можете просто сделать:

pip install argparse

Это не совсем ответ на точный вопрос :-),но на самом деле, если вам не хватает только нескольких функций, многие из 2.7 функций на самом деле взяты из независимых проектов и / или можно найти некоторые пакеты совместимости, например:

Список 2.7 новинок по общему признанию длиннее, но большинство других новых функций, вероятно, не большая промах, и взамен выне возитесь с несколькими установками Python на вашем компьютере.Иначе иди с pythonbrew: -)

3 голосов
/ 15 июля 2013

ubuntu 12.04

Установить зависимости:

$ sudo apt-get install python-software-properties

Добавить репо:

$ sudo add-apt-repository ppa:fkrull/deadsnakes

Обновить индекс репо:

$ sudo apt-get update

Установить Python 3.3:

$ sudo apt-get install python3.3

ubuntu 12.04> more

Установка зависимостей:

$ sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev

Скачать и скомпилировать python:

$ wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2

$ tar jxf ./Python-3.3.0.tar.bz2

$ cd ./Python-3.3.0

$ ./configure --prefix=/opt/python3.3

$ make && sudo make install

Некоторые приятные штрихи для установки команды py путем создания символической ссылки:

$ mkdir ~/bin
$ ln -s /opt/python3.3/bin/python ~/bin/py
1 голос
/ 11 марта 2011

Другой вариант - установить ActivePython , если вы не хотите сами что-то компилировать.Он также включает в себя менеджер двоичных пакетов .

1 голос
/ 08 марта 2011

Вы можете использовать virtualenv для создания различных сред Python. Просто новость, но что вам нужно в Python 2.7?

1 голос
/ 08 марта 2011

Просто скачайте Python 2.7 с http://www.python.org/download/releases/2.7.1/ и соберите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...