Cygwin/Python: Gleicher PYTHONPATH für Windows und Cygwin

Code-Stücke können hier veröffentlicht werden.
Antworten
rapidmax
User
Beiträge: 3
Registriert: Freitag 3. September 2004, 13:11

Ich habe das Problem, dass ich eigene Module sowohl unter PyWin als auch in der Cygwin-Umgebung nutzen will. Eine Umgebungsvariable mit Windows-Pfaden wird unter Cygwin nicht richtig interpretiert. Folgendes Shell-Script löst das Problem elegant:

Code: Alles auswählen

#!/bin/sh
# transforms PYTHONPATH windows enviroment variable into cygwin UNIX paths

if test -n "$PYTHONPATH"; then
        case "$PYTHONPATH" in
        ?:\\*|*\;*)
                old_pythonpath="$PYTHONPATH"
                PYTHONPATH=''
                old_ifs="$IFS"
                IFS=';'
                for pypath in $old_pythonpath; do
                        case "$pypath" in
                        ?:\\*)
                                drive=`echo "${pypath}" | head -c 1`
                        ;;
                        \\*)
                                # just guess
                                drive='c'
                        ;;
                        *)
                                continue
                        ;;
                        esac
                        drive=`echo $drive | tr "A-Z" "a-z"`
                        newpath=`echo "$pypath" \
                                | sed -e "y#\\\\\\#/#
                                        s#^${drive}:#/cygdrive/${drive}#i"`
                        if test -z "$PYTHONPATH"; then
                                PYTHONPATH="$newpath"
                        else
                                PYTHONPATH="${PYTHONPATH}:${newpath}"
                        fi
                done
                IFS="$old_ifs"
                export PYTHONPATH
        ;;
        esac
fi
Shell-Script nach /etc/profile.d/ kopieren. Es transformiert alle Pfade der Form C:\daten\pylib nach /cygdrive/c/daten/pylib. Der globale PYTHONPATH kann unter Systemsteuerung->System->Erweiter->Umgebungsvariablen gesetzt werden.

Gruss, Andy
Antworten