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
Python 3b2 für OS X?
-
- 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
So schnell ging es bei mir nicht, aber jetzt habe ich's auch: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.
Code: Alles auswählen
>>> print "Hallo Welt"
File "<stdin>", line 1
print "Hallo Welt"
^
SyntaxError: invalid syntax
>>>
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.
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
-
- 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
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).
Stefan
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
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
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