On Don, 2012-07-12 at 18:32 +0200, Yu-Fang Helena Wang wrote:
Hallo Thomas,
Vielen Dank für deine Antwort.
Am 12.07.12 13:38, schrieb Thomas Waldmann:
sh setuptools-0.6c11-py2.7.egg Das war das einzige egg, das passte. Fehlermeldung:
*setuptools-0.6c11-py2.7.egg: line 3: exec: python2.7: not found* Also ich kenn mich mit Python auf Mac nicht so aus, aber das hoert sich eher so an, als ob das python2.7 Binary nicht im Suchpfad (PATH) ist.
Tipp doch mal auf einer Shell "python2.7<enter>" ein.
OK, getippt: $ python2.7 Python 2.7.3 (default, Jul 11 2012, 17:37:48) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information.
Vorher hatte ich mit "pythonbrew switch 2.7.3" auf das neu installierte Python umgeschaltet.
Was sollte denn im .bash_profile drinstehen? (Das heißt in MacOS so, unter Linux glaub ich .bashrc) Python war zum Zeitpunkt des Tests in der Tat auf 2.6 gestellt. Das ist der Inhalt von .bash_profile für Python2.7:
#!/bin/bash
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" export PATH
PYTHONPATH = "$/Library/Python/2.7/site-packages:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7:/Library/Frameworks/Python.framework/Versions/2.7/lib:/Library/Frameworks/Python.framework/Versions/2.7/lib/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload$PYTHONPATH" export PYTHONPATH
[[ -s "$HOME/.pythonbrew/etc/bashrc" ]] && source "$HOME/.pythonbrew/etc/bashrc"
Das gibt folgenden Fehler:
$ source .bash_profile -bash: PYTHONPATH: command not found
Komischerweise funktioniert die gleiche Syntax für Python2.6.
Im Internet wurde folgendes vorgeschlagen, führt aber zu derselben Fehlermeldung: PYTHONPATH = "$ {PYTHONPATH} : /Library/Python/2.7/site-packages:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7:/Library/Frameworks/Python.framework/Versions/2.7/lib:/Library/Frameworks/Python.framework/Versions/2.7/lib/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload"
Was ist denn nun richtig, um den Pfad für Python 2.7 zu setzen?? Danach kann ich hoffentlich endlich mit setuptools weitermachen.
PS: meine Güte, geht das langsam...Ich wollte schon letzte Woche Python 2.7 mit Django und South installiert haben.
Grüße + danke, Suesssauer
Das ist ja kein Wunder, ich hab ja schließlich Python2.7.3 installiert. Das Binary heisst trotzdem nur "python2.7" (bzw. "python").
.3 ist ja nur ne Bugfix-Release und ansonsten kompatibel.
Was tue ich denn bitte jetzt? Ich will nach wie vor neue Pakete installieren und zwar mindestens Django und South. Aber natürlich auch alles andere. Bringt mir da virtualenv was?
virtualenv ist immer nett, um verschiedene Umgebungen separat (auch separat vom System) zu installieren. pip ist auch sehr nuetzlich (bei virtualenv dabei neuerdings iirc).
_______________________________________________ python-de maillist - python-de@python.org http://mail.python.org/mailman/listinfo/python-de
_______________________________________________ python-de maillist - python-de@python.org http://mail.python.org/mailman/listinfo/python-de
Hallo, Hier sind die Probleme mit deinem Shell Script: (gekürzt mit [...]) PYTHONPATH = "$ {PYTHONPATH} : /Library/Python/2.7/si[...]" __________^_^__^____________^_^ Leerzeichen haben in Shell-Skript eine strikte Bedeutung: Sofern sie nicht maskiert sind (") gelten sind IMMER als Parametertrenner. Eine Shell (in diesem Falle bash) interpretiert immer den ersten Ausdruck, der kein ist-gleich (=) enthält, als auszuführenden Befehl. In deinem Beispiel bedeutet, das das "PYTHONPATH" (auf das anschließende Leerzeichen achten!) als Befehl interpretiert wird. Daher auch die entsprechende Fehlermeldung:
-bash: PYTHONPATH: command not found
Wenn wir nun allerdings nun schreiben würden: PYTHONPATH= "$ {PYTHONPATH} : /Library/Python/2.7/si[...]" Wäre dies immer noch nicht korrekt da er nun der Variable $PYTHONPATH den Wert "" zuweist (anschließendes Leerzeichen!) und daher dann den nächsten Parameter mit $PYTHONPATH als Umgebungsvariable ausführt (bedingt durch die Maskierung wäre das: "$ {PYTHONPATH} : /Library/Python/2.7/si[...]", ohne Anführungszeichen und Kürzung) Korrekt (rein Zuweisungstechnisch) wäre daher: PYTHONPATH="$ {PYTHONPATH} : /Library/Python/2.7/si[...]" Nun wird der Shell-Variable $PYTHONPATH der Wert "$ {PYTHONPATH} : /Library/Python/2.7/si[...]" zugewiesen, da keine Parameter ohne ein ist-gleich folgen wird der Wert in einer Shell-internen Liste gespeichert. Das anschließende "export PYTHONPATH" setzt die Variable, dann als Umgebungsvarible für alle folgenden Befehlsaufrufe. Allerdings gibt jetzt immernoch 2 Probleme: 1. Das Leerzeichen in "$ {PYTHONPATH}" Da hier eine Variable (mit dem vorherigen Wert von $PYTHONPATH) eingefügt werden soll muss das Leerzeichen entfernt werden damit die Shell dies erkennt. (Korrekt: "${PYTHONPATH}" oder "$PYTHONPATH") 2. Die Leerzeichen um den ersten Doppelpunkt herum (" : ") Ich weiß jetzt nicht wie Python diese Dinge handhabt aber vermutlich werden Leerzeichen um Dateinamen nicht automatisch gelöscht. Daher wird Python vermutlich nach einem Verzeichnis " /Library/Python/2.7/site-packages" suchen. Da es im aktuellen Verzeichnis vermutlich keinen Ordner Namens " " geben wird (oder jener nicht die entsprechenden Unterordner enthalten wird) wird dies Fehlschlagen. Korrekt wäre daher: PYTHONPATH="${PYTHONPATH}:/Library/Python/2.7/site-packages:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7:/Library/Frameworks/Python.framework/Versions/2.7/lib:/Library/Frameworks/Python.framework/Versions/2.7/lib/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload" LG ALexander PS: Ich hoffe dies war ein interessanter Exkurs in die Shell-Programmierung