Ich bin neu in Python und arbeite auf einem Linux-Computer (Ubuntu 10.10). Es läuft Python 2.6, aber ich möchte 2.7 ausführen, da es Funktionen hat, die ich verwenden möchte. Ich wurde aufgefordert, 2.7 nicht zu installieren und dies als meine Standardpython festzulegen.
Meine Frage ist, wie kann ich 2.7 installieren und neben 2.6 ausführen?
python
ubuntu
python-2.7
Jimdolan
quelle
quelle
Ich habe kürzlich Python 2.7 auf Debian Squeeze zurückportiert. Da Ubuntu 10.10 neuer als Debian Squeeze ist, können Sie es sicherlich auf Ubuntu tun, wenn Sie es auf Squeeze tun können. Ich habe keinen Zugriff auf ein Ubuntu 10.10-System. Wenn ich eine eingerichtet habe, werde ich sie testen und diese Antwort aktualisieren. Hier ist stattdessen eine kurze Skizze von dem, was ich auf Debian gemacht habe.
Zunächst ein allgemeiner und offensichtlicher Kommentar, der jedoch leicht übersehen werden kann. Man sollte die aufgelisteten Build-Abhängigkeiten eines Debian-Pakets nicht zu ernst nehmen. Sie können weitaus spezifischer als nötig sein. Beispielsweise ist es unwahrscheinlich, dass Software wie Python, die portabel ist und über eine Vielzahl von Systemen ausgeführt werden kann, von sehr spezifischen Softwareversionen abhängt. Die Laufzeitabhängigkeiten können ebenfalls angepasst werden, dies sollte jedoch mit größerer Vorsicht erfolgen. Laufzeitabhängigkeiten werden jedoch meist dynamisch basierend auf Software generiert, die sich bereits auf diesem System befindet. Daher ist dies normalerweise kein großes Problem.
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
Auswahl der Testversion, die wir erhalten
apt-get source python2.7=2.7.2-8
Wenn
debian/control
wir uns das ansehen, sehen wir die folgenden Build-Abhängigkeitslinien.Build-Depends: 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], Gebietsschemas [! armel! avr32! hppa! ia64! mipsel], libsqlite3-dev, libffi-dev (> = 3.0 .5), mime-support, libgpm2 [linux-any], netbase, lsb-release, bzip2, libdb4.8-dev, gdb, python, help2man Build-Depends-Indep: Python-Sphinx Build-Konflikte: tcl8.3 -dev, tk8.3-dev, tcl8.4-dev, tk8.4-dev, python2.7-xml, python-xml, autoconf2.13, libncurses5-dev
Das meiste davon lässt sich beim Drücken leicht befriedigen. Mit dem praktischen Dienstprogramm kommen
apt-show-versions
wir auf meine Maschineapt-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
Wir sehen, dass alles außer
libtinfo-dev
in Squeeze verfügbar ist. Ich habe die Squeeze-Backport-Versionen vondebhelper
undpython-sphinx
, aber beide sind auch für Debian-Squeeze in Versionen verfügbar, die die Build-Anforderungen erfüllen.Beachten Sie auch, dass ich libncurses5-dev installiert habe
apt-show-versions libncurses5-dev libncurses5-dev/squeeze uptodate 5.7+20100313-5
Beide Pakete entsprechen dem Quellpaket
curses 5.7+20100313-5
. Beachten Sie, dasslibtinfo-dev
in der Tat ersetztlibncurses5-dev
.apt-cache show libtinfo-dev Package: libtinfo-dev Source: ncurses Version: 5.9-4 Installed-Size: 279 Maintainer: Craig Small <[email protected]> Architecture: i386 Replaces: libncurses5-dev (<< 5.9-3) Depends: libtinfo5 (= 5.9-4)
Man würde nicht erwarten, dass sich Python 2.7 auf einer solchen spezifischen Version von Flüchen entwickelt, und tatsächlich ist dies nicht der Fall. Wenn Sie jedoch versuchen, die Pakete zu erstellen, ohne die erhaltene Abhängigkeit zu erfüllen
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.
Es ist also notwendig zu bearbeiten
debian/control
. Beachten Sie, dass Sie die Datei auch auf ähnliche Weise bearbeiten müssendebian/control.in
, da sonst diecontrol
Datei fälschlicherweise neu generiert wirdcontrol.in
. Am einfachsten ist es, sielibncurses5-dev
aus derBuild-Conflicts
Linie undlibtinfo-dev
aus derBuild-Depends
Linie zu entfernen und danndebuild -uc -us
erneut auszuführen . Wenn Sie dieses Paket zusammen mit den Standard-Python 2.6-Standardpaketen auf Debian Squeeze installieren möchten, müssen Sie auch die beiden Zeilen entfernenConflicts: python-profiler (<= 2.7.1-2) Replaces: python-profiler (<= 2.7.1-2)
Diese Zeilen sind vorhanden, da 2.7 die
python-profiler
Funktionalität enthält. Wenn 2.7 die Standardpython ist,python-profiler
ist dies nicht mehr erforderlich. Wenn Sie jedoch 2.7 als nicht standardmäßiges Python installieren, gilt diese Argumentation nicht undpython-profiler
wird von 2.6 weiterhin benötigt.Dies sollte erfolgreich erstellt werden und zu der folgenden Liste von Binärpaketen führen.
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
Schließlich kann man die Binärpakete mit installieren
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
Manchmal
dpkg
kann es etwas schwierig sein, Abhängigkeiten zu erfüllen, wenn sie alle gleichzeitig installiert sind. Daher müssen Sie sie möglicherweiseapt-get -f install
später ausführen, wenn Abhängigkeitsfehler auftreten, oder Sie können die Pakete alternativ in kleineren Gruppen installieren.quelle
Nun, wenn das einzige, was Sie brauchen, Argparse ist (das haben Sie in einem Ihrer Kommentare gesehen!), Können Sie einfach Folgendes tun:
Dies ist nicht gerade eine Antwort auf die genaue Frage :-), aber wenn Sie nur einige wenige Funktionen vermissen, stammen viele 2.7-Funktionen tatsächlich aus unabhängigen Projekten und / oder einige Kompatibilitätspakete, z.
Die Liste der 2.7-Neuheiten ist zwar länger, aber die meisten anderen neuen Funktionen sind wahrscheinlich kein großer Fehler, und im Gegenzug spielen Sie nicht mit mehreren Python-Installationen auf Ihrer Box herum. Ansonsten geh mit Pythonbrew :-)
quelle
Ubuntu 12.04
Abhängigkeiten installieren:
Fügen Sie das Repo hinzu:
Aktualisieren Sie den Repo-Index:
Installieren Sie Python 3.3:
$ sudo apt-get install python3.3
Ubuntu 12.04> mehr
Installieren der Abhängigkeiten:
Python herunterladen und kompilieren:
$ 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
Einige nette Details zum Installieren eines py-Befehls durch Erstellen eines Symlinks:
$ mkdir ~/bin $ ln -s /opt/python3.3/bin/python ~/bin/py
quelle
Laden Sie einfach Python 2.7 von http://www.python.org/download/releases/2.7.1/ herunter und erstellen Sie es.
quelle
Sie können virtualenv verwenden , um unterschiedliche Python-Umgebungen zu erstellen. Nur neu sein, aber was braucht Python 2.7, das Sie brauchen?
quelle
Eine andere Möglichkeit ist die Installation von ActivePython, wenn Sie die Dinge nicht selbst kompilieren möchten. Es enthält auch einen Binärpaket-Manager .
quelle