Python 3b2 für OS X?

Probleme bei der Installation?
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Würde gerne ein bisschen mit Python 3 spielen, bräuchte aber eine Mac-Version. Gibt es da schon etwas fertiges? Ungern würde ich selbst ein binary bauen. Leider gibt es nur für Windows einen Installer... wie diskriminierend :)

Stefan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Nicht das ich wüsste, aber ich habe mir selbst Python 3.0b2 ins Home-Verzeichnis installiert ohne Probleme mit ``./configure --prefix=$HOME/python3 && make && make fullinstall``, hat nicht einmal 10 Minuten gedauert. Natürlich nicht auf dem Mac OS X, aber ``gcc`` wird wohl auch da dabei sein, nehme ich an.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Hm, habe noch kein gcc hier auf'm Rechner... und selbst wenn, bug 3432 und 3433 machen wenig Hoffung... offenbar läuft's gerade nicht rund. Schade.

Da ziehe ich mir dann lieber eine ubuntu-vmware als die OS X dev tools... :)

Stefan
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Leonidas hat geschrieben:Nicht das ich wüsste, aber ich habe mir selbst Python 3.0b2 ins Home-Verzeichnis installiert ohne Probleme mit ``./configure --prefix=$HOME/python3 && make && make fullinstall``, hat nicht einmal 10 Minuten gedauert.
So schnell ging es bei mir nicht, aber jetzt habe ich's auch:

Code: Alles auswählen

>>> print "Hallo Welt"
  File "<stdin>", line 1
    print "Hallo Welt"
                     ^
SyntaxError: invalid syntax
>>> 
Falls es interessiert:

Ich habe mir einen Ubuntu 8.04 Server genommen, dort mit `apt-get install gcc make` die notwendigen Entwicklungswerkzeuge nachgeladen, `Python-3.0b2.tgz` geladen, ausgepackt, dann `./configure --prefix=/home/sma/p && make` aufgerufen. Aus dem Konzept geworfen hat mich diese Ausgabe:

Code: Alles auswählen

Failed to find the necessary bits to build these modules:
_bsddb             _curses            _curses_panel   
_dbm               _gdbm              _hashlib        
_sqlite3           _ssl               _tkinter        
bz2                readline           zlib            
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
Ich hatte das für eine Fehlermeldung und einen Abbruch des Übersetzungsvorgang gehalten und nun lange gesucht, wie ich denn verhindert kann, dass etwa das auf meinem System nicht vorhandene Tk benutzt wird. Nachdem ich dann endlich erkannt hatte, dass das nur eine Warnung ist, habe ich mit `make test` weitergemacht. Dies läuft komischerweise 2x durch, um dann mit einem Fehler abzubrechen. Genug Tests laufen aber wohl und ein `make fullinstall` hat mir dann ein Python in `/home/sma/p/bin/` beschehrt :)

Das fehlende readline-Modul hat mich dann aber doch gewurmt und nach weiterem Suchen und schließlich einem `apt-get install libreadline5-dev` und erneutem Compile-Vorgang funktionierten dann auch die Cursortasten (die Curses-Module werden jetzt auch richtig übersetzt).

Ich habe mir dann noch mit `apt-get install sqlite3 libsqlite3-dev` Datenbank-Client und Entwicklungsdateien gezogen, um auch das sqlite3-Modul von Python übersetzen zu können - die übrigen Module interessieren mich nicht.

Stefan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Die meisten davon bekommt man wohl mit libncursesw5-dev (curses), libdb4.5-dev (bsddb), zlib1g-dev (zlib), libgdbm-dev (gdbm), libssl-dev (_ssl, vermutlich _hashlib) und libbz2-dev (bz2) (Namen der Libs beziehen sich auf Debian Lenny).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Nachdem ich mir nun doch Xcode 3.1 installiert habe, ist es mir mit folgendem kleinen Patch gelungen, Python 3b2 auf OS X 10.5 inklusive readline-Support zum Laufen zu bekommen:

In Zeile 536 von setup.py habe ich das `do_readline = False` um ein `or True` ergänzt, weil da jemand aufgegeben hat, den eigentlichen Fehler zu finden.

Dies ist dann bei Zeile 36 in Modules/readline.c einzufügen (nein, ich weiß nicht so genau, was ich damit anrichte).

Code: Alles auswählen

#undef HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK
#define rl_compentry_func_t CPFunction
Stefan
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Da inzwischen Python 3.0 beta 3 erschienen ist, habe ich mir auch diese Version installiert. Das Problem mit readline ist immer noch da, aber dieses Mal biete ich einen Tipp, wie man es sauber lösen kann:

Ich habe GNU readline geladen und mit `./configure && make static` die statischen Bibliotheken `libhistory.a` und `libreadline.a` erzeugt. Installieren wollte ich diese Bibliothek nicht.

Ich habe dann einfach alle `*.h`-Dateien von readline genommen und in ein Verzeichnis `readline` im Basisverzeichnis des ausgepackten Python-Quelltexts (`.../Python-3.0b3`) kopiert. Dann zieht `setup.py` zumindest das readline-Modul in Erwägung. Ich habe außerdem die beiden `*.a`-Dateien ebenfalls in das Basisverzeichnis kopiert.

Kompiliert man jetzt alles mit `configure --prefix=$HOME/python3 && make`, wird die eigene statische Bibliothek leider nicht aufgepickt.

Daher lösche ich jetzt die Datei `build/lib.macosx-10.3-i386-3.0/readline.so`, die eine ungefähre Größe von 25k haben sollte. Dann rufe ich `make LDFLAGS=-L.` auf, was die Datei nochmals baut, diesmal aber inklusive meiner readline-Bibliothek. Die Datei sollte jetzt etwa 244k groß sein. Paranoide Menschen löschen vorher auch noch `libpython3.0.a` und `python.exe`, aber ich glaube, das ist nicht nötig, weil dynamisch gebunden wird.

Jetzt kann man sich mit `make install` eine lokale Python-Installation im eigenen HOME-Verzeichnis anlegen. Nun kann ich readline-completion aktivieren. IPython gibt es offenbar noch nicht ...

Stefan
Antworten