Wie kann ich eine 32-Bit-Python unter 64-Bit-Ubuntu installieren?

7

Ich verwende Ubuntu 10.10 ( Linux pc07 2.6.35-27-generic #48-Ubuntu SMP Tue Feb 22 20:25:46 UTC 2011 x86_64 GNU/Linux) und das Standard-Python-Paket (Python 2.6.6).

Ich möchte installieren python-psyco, um die Leistung eines meiner Skripte zu verbessern, ist jedoch nur python-psyco-docfür 64-Bit verfügbar. Ich habe eine virtuelle Maschine ausprobiert, aber die Leistungssteigerung ist auf der virtuellen Maschine viel geringer als auf einem "echten" installierten 32-Bit-Ubuntu.

Meine Frage lautet also: Wie kann ich einen 32-Bit-Python mit Psyco auf meinem 64-Bit-Ubuntu-Computer installieren?

edit: Ich habe diesen Artikel gefunden und gemacht:

  • Laden Sie "Python 2.7.1 bzipped source tarball" von http://python.org/download/ herunter.
  • Gehen Sie in das Verzeichnis, in dem Sie "Python 2.7.1" dekomprimiert haben.
  • OPT=-m32 LDFLAGS=-m32 ./configure --prefix=/opt/pym32
  • make

Aber ich habe diesen Fehler bekommen:

gcc -pthread -m32 -Xlinker -export-dynamic -o python \
            Modules/python.o \
            libpython2.7.a -lpthread -ldl  -lutil   -lm  
libpython2.7.a(posixmodule.o): In function `posix_tmpnam':
/home/moose/Downloads/Python-2.7.1/./Modules/posixmodule.c:7346: warning: the use of `tmpnam_r' is dangerous, better use `mkstemp'
libpython2.7.a(posixmodule.o): In function `posix_tempnam':
/home/moose/Downloads/Python-2.7.1/./Modules/posixmodule.c:7301: warning: the use of `tempnam' is dangerous, better use `mkstemp'
Segmentation fault
make: *** [sharedmods] Fehler 139

edit2: Jetzt habe ich http://indefinitestudies.org/2010/02/08/how-to-build-32-bit-python-on-ubuntu-9-10-x86_64/ gefunden und es scheint, dass dies funktioniert hat:

  • cd Python-2.7.1
  • CC="gcc -m32" LDFLAGS="-L/lib32 -L/usr/lib32 \ -Lpwd/lib32 -Wl,-rpath,/lib32 -Wl,-rpath,/usr/lib32" \ ./configure --prefix=/opt/pym32
  • make
  • sudo make install

Aber die Installation von psyco hat nicht funktioniert:

Dieser Fehler trat auf:

PROCESSOR = 'ivm'
running install
running build
running build_py
running build_ext
building 'psyco._psyco' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DALL_STATIC=1 -Ic/ivm -I/usr/include/python2.6 -c c/psyco.c -o build/temp.linux-x86_64-2.6/c/psyco.o
In file included from c/psyco.c:1:
c/psyco.h:9: fatal error: Python.h: Datei oder Verzeichnis nicht gefunden
compilation terminated.
error: command 'gcc' failed with exit status 1

Die Installation des Pakets python-devlöste das Problem, aber ich konnte psyco immer noch nicht verwenden. Jetzt habe ich ein 32Bit Ubuntu System installiert.

Martin Thoma
quelle
Warum nicht einfach für 64bit kompilieren, da Python eine interpretierte Sprache ist?
RolandiXor

Antworten:

7

Um 32-Bit-Anwendungen auf einem 64-Bit-Ubuntu-System auszuführen, benötigen Sie ia32-libs. Überprüfen Sie von einem Terminal aus, ob Sie dies verwenden

dpkg -l ia32-libs

Wenn Sie es installiert haben, sollte die Ausgabe folgendermaßen aussehen:

ii   ia32-libs ...

Wenn es so aussieht un ia32-libs, müssen Sie es installieren mit:

sudo apt-get install ia32-libs
Jamess
quelle
1
Leider funktioniert dies in Ubutu 14.04 nicht. Vharron @ tifa: ~ / ll / googd / build / x86l $ sudo apt-get install ia32-libs Lesen von Paketlisten ... Fertig Erstellen des Abhängigkeitsbaums Lesen von Statusinformationen ... Fertig Paket ia32-libs ist nicht verfügbar, wird aber von einem anderen Paket referenziert. Dies kann bedeuten, dass das Paket fehlt, veraltet ist oder nur von einer anderen Quelle verfügbar ist. Die folgenden Pakete ersetzen es jedoch: lib32z1 lib32ncurses5 lib32bz2-1.0 E: Das Paket 'ia32-libs' hat keinen Installationskandidaten
vharron
4

Ich habe dies endlich zum Laufen gebracht, indem ich eine 32-Bit-Schroot-Umgebung installiert habe. Folgen Sie den Anweisungen hier: https://help.ubuntu.com/community/DebootstrapChroot

Ich habe die folgende Konfigurationsdatei für mein schroot ( /etc/schroot/chroot.d/natty32.conf) verwendet:

[natty32]
description=Ubuntu 11 for i386
directory=/srv/chroot/natty32
personality=linux32
root-users=myloginname
type=directory
users=myloginname

Starten Sie nach der Installation die Schroot-Sitzung:

schroot -c natty32 -u root

Installieren Sie dann python2.6 mit apt-get, installieren Sie pip damit ( http://guide.python-distribute.org/installation.html ) und installieren Sie dann psyco, numpy usw.

Artemyk
quelle