Python unter Kontrolle unter Mac OS X – Einrichtung von Umgebung und Bibliotheken

Nach dem Start mit Python auf Ubuntu Linux, habe ich jetzt für eine gute Zeit die meisten meiner anhaltenden Arbeit auf dem Mac, derzeit Mac OS X 10.6. Leider habe ich vernachlässigt, um genau zu vermitteln, wie Python dort installiert ist und landete mit:

  • Python 2.6.1 (Mac Standard Version?) In /usr/bin (auch, 2.5.4, was ich nicht sicher bin, wie es dort war)
  • Python 2.6.5 über MacPorts in /opt/local/bin/ installiert. Dies ist meine Vorgabe
  • Ich benutze pip , um Bibliotheken zu installieren, die in irgendeinem ungöttlichen Ort /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ (so etwas wie /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ – SRSLY?)
  • Ansonsten, meistens TextMate und Git für Versionskontrolle. Django und Google App Engine, etc …

Jetzt bin ich bereit, 2.7 und 3.2 einzurichten, und ich bin unglücklich mit dem zufälligen Zustand der Dinge. Also, was sind Ihre Lieblings-Ansätze für die Organisation der Code und Bibliotheken, und wie haben Sie den Mac in Unterwerfung ringen?

Ich möchte weiterhin pip , möchte aber gern mehr Kontrolle haben oder zumindest verstehen, welche Bibliotheken für welche Version installiert und von wo aus zugänglich gemacht werden soll: Ich habe Probleme mit der Installation von py.test über pip und nur Sein In der Lage, es aus der veralteten 2.6.1 Python, nicht meine aktuelle 2.6.5 einladen. MacPorts hat python_select , aber es ist nicht allzu hilfreich:

 reason: chris$ python_select -l Available versions: current none python26 python26-apple 

Die meisten Python-Leute, die ich gefragt habe, benutzen keine MacPorts, was mir nicht gefällt, aber der Vorrat Mac Python von python.org . Ich habe auch die Empfehlung gehört, virtualenv systematisch zu benutzen, also was ist der Link zu einer guten praktischen Einführung?

3 Solutions collect form web for “Python unter Kontrolle unter Mac OS X – Einrichtung von Umgebung und Bibliotheken”

virutalenv ist ein großartiges Werkzeug und ist sehr nützlich für die Verwaltung mehrerer Python-Instanzen auf den meisten Plattformen. Auf Mac OS X, aber, die Dinge sind komplizierter, weil die Verwendung von Framework-Builds macht es üblich, mehrere Instanzen von sogar die gleiche große Version von Python begegnen. Ich schlage vor, Sie zuerst verstehen und bequem mit, wie man Framework-Installationen auf Mac OS X zu verwalten, bevor Sie sich in virtualenv .

" /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ – SRSLY?"

Ja, das ist der Standardstandort innerhalb eines Python Mac OS X Frameworks. Die meisten Distributoren von Python auf Mac OS X verwenden einen Framework-Build , jeder in der Regel mit einem anderen Root, weil es macht es einfacher, mehrere Versionen zu unterstützen und alle Site-Pakete für eine bestimmte Python-Instanz zusammen an einem Ort installiert zu halten.

Für Mac OS X 10.6 liefert Apple ein Python 2.6 (verwurzelt bei /System/Library/Frameworks/Python.framework und symlinked to /usr/bin/python2.6 ) sowie ein Python 2.5 (für Kompatibilität mit Mac OS X 10.5 – das ist der /usr/bin/python2.5 Sie sehen). Die python.org Mac OS X Installateure installieren in /Library/Frameworks/Python.framework . MacPorts verwendet /opt/local/Library/Frameworks/Python.framework .

Die Frameworks enthalten ein bin Verzeichnis (bei ../Versions/xx/bin im Framework); Dies ist normalerweise der Standardstandort, in dem Paket-Skripts installiert werden. Es ist auch dort, wo Symlinks zu den Interpreter-Binärdateien platziert sind.

Hier ist ein Blick auf ein python.org-style Framework mit mehreren Versionen von Python installiert:

 $ cd /Library/Frameworks/Python.framework/Versions/ $ ls -l total 8 drwxrwxr-x 8 root admin 340 Dec 23 2008 2.5/ drwxrwxr-x 8 root admin 340 Aug 10 21:42 2.6/ drwxrwxr-x 8 root admin 340 Jul 3 12:24 2.7/ drwxrwxr-x 7 root admin 306 Mar 23 17:42 3.1/ drwxrwxr-x 7 root admin 306 Aug 10 22:14 3.2/ lrwxr-xr-x 1 root admin 3 Aug 10 21:47 Current@ -> 2.6 $ cd 2.6 $ ls -l total 7776 lrwxr-xr-x 1 root admin 17 Aug 10 21:47 Headers@ -> include/python2.6 drwxrwxr-x 3 root admin 102 Aug 10 21:42 Mac/ -r-xrwxr-x 1 root admin 3973552 Aug 10 21:41 Python* drwxrwxr-x 4 root admin 170 Aug 10 21:48 Resources/ drwxrwxr-x 2 root admin 578 Aug 12 15:19 bin/ drwxrwxr-x 3 root admin 102 Aug 10 21:42 include/ drwxrwxr-x 3 root admin 646 Aug 10 21:43 lib/ drwxrwxr-x 3 root admin 102 Aug 10 21:41 share/ $ ls -l bin total 264 -rwxrwxr-x 1 root admin 150 Aug 10 21:41 2to3* -rwxr-xr-x 1 nad admin 360 Aug 12 15:19 easy_install* -rwxr-xr-x 1 nad admin 368 Aug 12 15:19 easy_install-2.6* lrwxr-xr-x 1 root admin 7 Aug 10 21:47 idle@ -> idle2.6 -rwxrwxr-x 1 root admin 138 Aug 10 21:41 idle2.6* lrwxr-xr-x 1 root admin 8 Aug 10 21:47 pydoc@ -> pydoc2.6 -rwxrwxr-x 1 root admin 123 Aug 10 21:41 pydoc2.6* lrwxr-xr-x 1 root admin 9 Aug 10 21:47 python@ -> python2.6 lrwxr-xr-x 1 root admin 16 Aug 10 21:47 python-config@ -> python2.6-config -rwxrwxr-x 1 root admin 29584 Aug 10 21:43 python2.6* -rwxrwxr-x 1 root admin 1463 Aug 10 21:42 python2.6-config* lrwxr-xr-x 1 root admin 10 Aug 10 21:47 pythonw@ -> pythonw2.6 -rwxrwxr-x 1 root admin 29584 Aug 10 21:43 pythonw2.6* lrwxr-xr-x 1 root admin 11 Aug 10 21:47 smtpd.py@ -> smtpd2.6.py -rwxrwxr-x 1 root admin 18272 Aug 10 21:41 smtpd2.6.py* 

Hier ist ein MacPorts- bin inklusive einer Reihe von zusätzlichen Site-Paketen:

 $ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6 $ ls -l bin total 952 -rwxr-xr-x 2 root wheel 160 Jul 15 01:56 2to3* -rwxr-xr-x 2 root wheel 1541 Jun 8 19:59 apirst2html.py* -rwxr-xr-x 2 root wheel 363 Oct 5 2009 bdist_mpkg* [...] -rwxr-xr-x 2 root wheel 211 Jun 2 12:45 django-admin.py* -rwxr-xr-x 2 root wheel 410 Jul 15 17:30 easy_install* -rwxr-xr-x 2 root wheel 418 Jul 15 17:30 easy_install-2.6* [...] -rwxr-xr-x 2 root wheel 368 Jun 24 02:00 pip* -rwxr-xr-x 1 root wheel 342 Sep 18 2009 pkginfo* [...] lrwxr-xr-x 1 root wheel 9 Jul 15 01:58 python@ -> python2.6 lrwxr-xr-x 1 root wheel 16 Jul 15 01:58 python-config@ -> python2.6-config -rwxr-xr-x 2 root wheel 24932 Jul 15 01:57 python2.6* -rwxr-xr-x 2 root wheel 1473 Jul 15 01:57 python2.6-config* [...] 

Wenn Sie 2.7 oder 3.1 Pythons mit python.org Installateuren oder MacPorts installieren, sind sie alle unter /Library/Frameworks oder /opt/local/Library/Frameworks verwurzelt und werden gerne mit anderen Versionen koexistieren. Um Framework-Installationen erfolgreich zu nutzen, musst du deine Shell- PATH . Insbesondere sollten Sie sicherstellen, dass das Framework-Verzeichnis der Python (s), die Sie verwenden möchten, auf Ihrem PATH . Also für MacPorts, so etwas in ~/.bash_profile :

 export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin:/opt/local/bin:$PATH 

Oder für die python.org Installateure:

 export PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:$PATH 

Darüber hinaus müssen Sie in der Regel eine separate Version Ihrer bevorzugten Python-Paketverwaltungs-Add-ons (wie pip oder den Befehl easy_install von Distribute oder setuptools ) für jede Python-Instanz setuptools Sie verwenden. Jeder wird in das Standard-Skriptverzeichnis (dh das Framework- bin Verzeichnis) installiert. MacPorts kümmert sich um diese automatisch, wenn Sie die Version des Pakets sudo port install py26-pip ( sudo port install py26-pip oder sudo port install py31-distribute ). Beachten Sie, dass Apple eine Reihe von easy_install Links in /usr/bin für seine Pythons und sie installieren Pakete an /Library/Python . Sie müssen sicherstellen, dass Sie die easy_install oder easy_install für Ihre Instanz von Python geeignet. Sicherstellen, dass die Instanz Framework bin Verzeichnis ist zuerst in der PATH stellt sicher, dass.

Beachten Sie, wenn Sie MacPorts verwenden, können python_select Befehl python_select um zu verwalten, auf welche Python-Instanz von /opt/local/bin/python hingewiesen wird. Dann, wenn /opt/local/bin erscheint früher in deiner PATH-Liste als andere Verzeichnisse mit einer python es regiert, was deine Standard- python . Aber du musst wirklich den PATH verwalten, indem du das Framework- bin Verzeichnis hinzufügst. python_select ist in der Regel nicht python_select nützlich.

Ein weiterer positiver Aspekt der Verwendung von MacPorts (oder einem ähnlichen Breitband-Distributor) ist, dass es viele populäre Python-Pakete zur Verfügung stellt, einschließlich der Handhabung der gelegentlichen unordentlichen Details des Aufbaus und der Verknüpfung von Drittanbieter-C-Bibliotheken, die nicht mit Mac OS X ausgeliefert wurden MySQLdb und PIL Pakete sind häufige Stolpersteine ​​auf Mac OS X wegen der MySQL-Client-Bibliotheken und libjpeg , aber MacPorts macht es viel einfacher, alles richtig zu bekommen. Aber du hast die Wahl, um die Dinge direkt mit MacPorts zu installieren ( sudo port py26-pil ) oder per pip ( sudo pip install pil ) oder easy_install , oder du kannst die Quelle herunterladen und es selbst machen ( sudo python setup.py ... ). Und weil alle von ihnen unter den Abdeckungen Python's Distutils , um die schmutzige Arbeit zu machen, werden alle diese Methoden in der Regel am Ende der Installation eines Paketes Dateien an der gleichen Stelle für eine gegebene Python-Instanz.

Ich habe gerade 'pythonbrew', die ich easy_installed mit dem Lager-System Python auf 10.6.7. Ich musste die '–force'-Option verwenden, um die Post-Compile-Tests zu umgehen, da ich Fehler mit test_dl und test_readline hatte (ein schneller google-Check zeigte nicht, dass dies ein echtes Problem war).

 $ sudo easy_install pythonbrew 

Einmal installiert, führen Sie diese für weitere Anweisungen:

 $ pythonbrew_install 

Also habe ich jetzt eine schön isolierte Python-2.7.1 Installation, ohne die Systeminstallation zu stören.

Ich würde empfehlen, Homebrew, wie die Python Guide Menschen:

Hier ist eine fantastische Schritt für Schritt Anleitung zum Einstieg:

http://docs.python-guide.org/en/latest/starting/install/osx/#install-osx

  • Ist es akzeptabel und sicher zu laufen Pip-Installation unter sudo?
  • Anrufen von AppleScript aus Python ohne osascript oder appscript?
  • Wo ist virtualenvwrapper.sh nach Pip installieren?
  • Installiere PyObjC auf Python 2.6 auf OS X 10.5?
  • Kann auf AppEngine SDK-Sites über lokale IP-Adresse zugreifen, wenn localhost gut funktioniert und ein MacOSX
  • Pygame stürzt ab, wenn die Füllung (Farbe) verwendet wird
  • Wie verwende ich cx_Freeze auf Mac?
  • Wie installiere ich eine DMG-Datei von der Kommandozeile?
  • Wie mache ich eine Menüleiste (System Tray) App für OSX in Python?
  • Unterschiede zwischen Framework und Non-Framework-Builds von Python auf Mac OS X
  • Spawn einen neuen non-blocking Prozess mit Python auf Mac OS X
  • Python ist die beste Programmiersprache der Welt.