Hallo
juppes!Und wo trage ich das ein? In ~/.profile oder ~/.bash_profile?
In
~/.profile stehen die spezifischen Umgebungsvariablen für den jeweils angemeldeten Nutzer (das, was man nach Eingabe von
env angezeigt bekommt;
env = environment = Umgebung). Pfade also hier eintragen.
In
~/.bash_profile kann man das Verhalten der Bash (Bourne-again shell) beeinflussen, z.B. Reaktion auf bestimmte Nutzereingaben, Codeeinfärbung/Syntaxhighlighting usw. Die Bash ist die Standard-Shell in Mac OS X.
Es gibt auch andere Shells, die anderslautende Befehle und anders aufgebaute Syntax erwarten, z.B. die TENEX C Shell (tcsh), für welche die lilypond-Engines geschrieben wurden. Zu Beginn eines Scripts muss daher angegeben werden, welcher Interpreter angesprochen werden soll. Diese erste Zeile wird mit
#! begonnen, gefolgt vom Systempfad, z.B.
#!/bin/bash (auch DOS unter Windows-Systemen ist eine Shell, aber dort gibt es ohne weiteres Zutun nur diese eine). Ein sichtbarer Unterschied zwischen
bash und
tcsh ist z.B. die explizite Anweisung in der
tcsh, etwas auszuführen (
exec), was die
bash nicht benötigt.
Wäre schon toll, wenn auch die Shell und auch alles andere immer gleich Bescheid wüßte, wo Python ist, so daß es dann egal wäre, ob ich im Terminal arbeite oder eben in TeXShop oder in Lilypond direkt.
An diesem Punkt teilen sich leider die Wege.
(1) Terminal (oder auch Konsole, Eingabeaufforderung, Prompt etc.) und ShellLaut deiner aktuellen Ausgabe durch
env weiß dein System bereits, wo überall sich Python befindet – falsch: dein System weiß, wo es danach
suchen soll, nämlich in den Pfaden, die in der Variablen
PATH eingetragen sind. Die Verzeichnisse, die dort angegeben sind, werden von vorn nach hinten solange durchsucht, bis die gewünschte Anwendung gefunden wurde; die Suche wird sobald abgebrochen und die Anwendung ausgeführt. In deiner
PATH-Variablen steht an erster Stelle der Pfad zu Python 2.6 (
/Library/Frameworks/Python.framework/Versions/2.6/bin), gleich darauf der Pfad zu Python 3.1 (
/Library/Frameworks/Python.framework/Versions/3.1/bin). Gibt sich nun das aufgerufene Python-Script mit der ersten Version zufrieden, besteht keine Notwendigkeit zum Weitersuchen, und das Script wird ausgeführt. Verlangt ein Script eine höhere Version, wird
PATH weiter durchsucht, ob eine höhere Version gefunden werden kann. Bei Erfolg wird das Script ausgeführt. Andererseits bricht das System mit einer Fehlermeldung ab. Dein unverändertes
convert-ly (mit der ersten Zeile
#!/usr/bin/env python) muss im
Terminal also funktionieren! Das einzige Problem dabei kann jetzt nur sein, dass
convert-ly selbst nicht gefunden wird, weil die Pfadangabe zum Lilypond-Container fehlt. Aber das ist einfach und hatten wir bereits:
convert-ly liegt genau wie
lilypond und
lilypond-book in
/Applications/LilyPond.app/Contents/Resources/bin, und dieser Pfad muss
PATH hinzugefügt werden (wie bei
GS_LIB). Also wieder Terminal starten, und los geht’s:
cd
nano .profile
und an’s Ende der Datei folgenden Zweizeiler einfügen:
# Pfad zu LilyPond 2.12.3
export PATH="$PATH:/Applications/LilyPond.app/Contents/Resources/bin"
Nach Abspeichern und Aus-/Einloggen sind
convert-ly und auch
lilypond und
lilypond-book direkt im Terminal ohne Umwege aufrufbar. Du kannst es ausprobieren, indem du in ein beliebiges Verzeichnis mit .ly-Dateien wechselst und dort eine .ly-Datei mit
convert-ly aufrufst. Ein Beispiel: kopiere deine
GraafDuoEconomique.ly (aus deinem anderen Thread) auf den Schreibtisch und benenne sie meinetwegen in
test.ly um. Im Terminal wechselst du nun dorthin und lässt sie mit
convert-ly durchlaufen:
cd
cd Desktop/
convert-ly test.ly
Bei Erfolg sollte im mindesten folgendes in’s Terminalfenster geschrieben werden:
convert-ly (GNU LilyPond) 2.12.3
Processing `test.ly'...
Applying conversion:
(2) TeXShop und die TeXShop-EnginesEs ist mir wirklich schleierhaft,
warum TeXShop den Systemunterbau ignoriert. Ich habe jetzt wirklich vieles ausprobiert und versucht zu verstehen, und es ziert sich nach wie vor wie die Zicke am Strick … Aber gut, es hat sein Für und Wider – bringen wir der TeXShop-Engine
convert-ly.engine die Pfade eben auch bei! Wie einfach das ist, hatten wir vor gefühlten 25.000 Zeilen in diesem Thread schon einmal, aber es genügt tatsächlich der Zweizeiler aus meiner vorangehenden Antwort (unter Verwendung der
tcsh):
#!/bin/tcsh
exec /Library/Frameworks/Python.framework/Versions/2.6/bin/python /Applications/Lilypond.app/Contents/Resources/bin/convert-ly -e "$1"
Das Problem ist halt, dass
convert-ly eben nur ein Script ist, das von einem Programm abgearbeitet werden muss. In der ersten Script-Zeile in
convert-ly wird System-Python zwar aufgerufen, aber das wird irgendwie nicht an TeXShop zurückgegeben. Daran wird’s unterm Strich scheitern.
Im Prinzip muss man nur im Hinterkopf behalten, dass TeXShop möglicherweise
bewusst unabhängig manche Umgebungsvariablen ignoriert – und genau das ist unser Vorteil beim Stricken von neuen TeXShop-Engines! Ich hatte ja früher schon erwähnt, dass ich verschiedene Engines für die aktuell stabile Version, die jeweils aktuelle Entwicklerversion und auch für lilypond-book (bzw. lilypond-latex) und convert-ly habe. Wenn schon TeXShop das nicht anders kapiert, machen wir uns das doch zunutze
Fazit- convert-ly kann so bleiben, wie es ist, solang die Pfade zu Python und Lilypond in der Environment-Variable PATH zur Verfügung gestellt werden.
- TeXShop-Engines müssen sicherheitshalber die (absoluten) Pfadangaben noch einmal enthalten, damit es reibungslos funktioniert.
- Kein Programm sucht von allein die ganze Festplatte ab. (Das könnte mittlerweile auch ganz schön lange dauern …)
- TeXShop ist nicht das Terminal!
- Die verantwortliche Datei für den angemeldeten Nutzer ist ~/.profile
Das „direkt in Lilypond“ hab ich mal wieder bewusst ausgelassen … Es macht ja auch keinen Spaß, in einem langweiligen monochrom-Texteditor zu arbeiten

Bei deiner Systemkonfiguration und der für TeXShop kann ich dir helfen, aber den buggy Lilypond-Editor kann ich beim besten Willen nicht patchen. Natürlich ist es doof, wenn eine App nicht so spurt, wie wir das möchten, aber das kennen wir ja schon von woanders her. Für diese Fälle gibt’s eben solche Foren wie dieses hier! (Stell dir nur vor, du hättest für Lily bezahlt und hingest daraufhin Woche für Woche in einer teuren Supportline.)
Falls dir die Idee
in diesem Thread zusagt, schreib doch einfach was dazu.
Beste Grüße, Robert