2010-06-16 7 views
5

Bei Tiger habe ich eine benutzerdefinierte Python-Installation verwendet, um neuere Versionen auszuwerten, und ich hatte keine Probleme damit *. Jetzt ist Snow Leopard ein wenig mehr up-to-date und standardmäßig Schiffe mitVerwenden Sie unter Mac OS X den mitgelieferten Python oder Ihren eigenen?

$ ls /System/Library/Frameworks/Python.framework/Versions/ 
2.3 2.5 2.6 @Current 

  • Was Best Practice angesehen werden könnte? Verwenden Sie das mit Mac OS X gelieferte Python oder eine benutzerdefinierte kompilierte Version in beispielsweise $HOME.
  • Gibt es irgendwelche Vorteile/Nachteile, die die eine Option gegenüber der anderen nutzen?

war mein Setup ziemlich einfach, so weit und so ausgesehen: Benutzerdefinierte Python kompiliert in $HOME und ein $PATH, die in $HOME/bin zuerst, und anschließend meine Python verwenden würde privaten Version aussehen würde. Auch $PYTHONPATH wies auf diese lokale Installation hin. Auf diese Weise brauchte ich nicht sudo -install-Pakete - virtualenv kümmerte sich um den Rest. Hinweis: Ich mochte dieses Setup, also bin ich nur neugierig und dachte, ich erkundige mich Bienenstock Geist.

Antwort

5

Ich denke, es hängt von Ihren Bedürfnissen ab. Persönlich verwende ich die neueste Version für jede Serie (2.5, 2.6 usw.) von MacPorts.

+2

+1 für Macports – systempuntoout

0

Was Sie auf Ihrer Maschine tun, liegt ganz bei Ihnen. Wenn Sie Ihren Code für andere Benutzer bereitstellen, würde ich sagen, dass es eindeutig vorzuziehen ist, die gelieferte Version zu verwenden, es sei denn Sie wirklich brauchen die neuere Version.

+1

Ich stimme nicht zu. Die meisten Python-Softwarepakete enthalten Python im Paket, und das ist der richtige Weg. Gott weiß, was der Benutzer auf seinem Rechner installiert. – unbeli

+1

@unbeli Wenn Sie eine umfangreiche Anwendung verteilen, OK. Aber für ein paar Skripte? Wie viele Python-Interpreter braucht eine Maschine eigentlich? Und ganz allgemein, wie macht es Sinn * nicht * für die Basisumgebung zu codieren, wenn alles andere gleich ist? – walkytalky

+2

Nun, Skripte sind nicht wirklich "im Einsatz", also gibt es keine Möglichkeit, Python zu bündeln. Es gibt keine Basislinie, der Sie hier vertrauen können. Ich weiß, es ist scheiße, aber das ist Leben, niemand hat versprochen, es wird nicht saugen;) – unbeli

1

Das Problem bei der Verwendung der Python-Version, die mit Ihrem Betriebssystem geliefert wird, ist, dass es möglicherweise Fehler enthält oder auf andere Weise eingeschränkt ist. Wenn Sie Python von Fink oder MacPorts installieren, haben Sie die Freiheit, es zu aktualisieren.

Ein weiterer, wichtiger Vorteil der eigene Version von Python mit einem Paket-Manager (Fink oder MacPorts) der Verwaltung ist, dass sie viel mit der Zusammenstellung von Modulabhängigkeiten (zum Beispiel helfen, wenn Sie ein Modul verwenden, die auf kompilierte hängen C-Code). Daher ist die Installation von Python-Modulen sicherlich einfacher, wenn Sie das mit OS X ausgelieferte Python nicht verwenden. Dies ist ein wichtiger zu beachtender Punkt, bevor Sie Ihre Wahl treffen.

2

Ich kompiliere es selbst, weil dies mir die neueste 64-Bit-Version gibt. Die offiziellen OS X-Builds scheinen nur 32-Bit zu sein. Ich habe MacPorts vor einigen Monaten fallen gelassen, weil das Abhängigkeitssystem und die oft veralteten Pakete zu nervig waren.

0

Ich graben dieses alte Thema.

Es gibt keine wirklichen Antworten, um eine eigene Python Distribution/Distribution aus Quelle und Bundle zu erstellen und korrekt zu paketieren. Ich habe versucht, es aus der Quelle zu kompilieren, indem ich es mit meiner programmierten C-Anwendung verknüpfe, die Python 3 verwendet und auf meinem Computer funktioniert. Aber wenn ich es um das Dateisystem verschiebe (z. B. nach/tmp), hat es Pfade in der Python-Kompilierung fest codiert. Und ich habe keine Ahnung, was Skript/Wrapper machen soll.

Mein Punkt, um unsere eigene Python-Distribution zu verschicken, ist, sicherzustellen, dass keine merkwürdige Interpeter-Änderung beim Versand der Anwendung beteiligt ist und sich auf die OS-Python-Installation verlässt.

Es ist auch nirgends in den Python-Dokumenten dokumentiert.

Ich habe diesen Beitrag bereits gefunden 4206511