Shell-Skriptdatei - Übergeben Sie mehrere Parameter an den Interpreter


1

Ich habe ein von mir ausgeführtes Python-Skript, das unter einer bestimmten Umgebung ausgeführt werden muss, sodass ich das Programm wie folgt aus meinem Arbeitsverzeichnis ausführen würde ( ~/project/src):

python manage.py shell

Dies öffnet eine interaktive Shell, in die ich meine eigenen Befehle eingeben kann.

Ich habe andere administrative Aktivitäten, die ich in einem anderen Verzeichnis unterbringen möchte ( ~/project/admin). Die manage.py ist wirklich pingelig, wenn es darum geht, aus dem Arbeitsverzeichnis zu laufen. Um das Ganze zum Laufen zu bringen, habe ich ein Skript erstellt, das so beginnt:

#!/usr/bin/python ../src/manage.py shell

Es gibt ein paar Probleme damit. Das erste ist, dass es nicht funktioniert:

/usr/bin/python: can't open file '"/../src/manage.py" shell': [Errno 2] No such file or directory
  • Wie geben Sie dem Interpreter mehrere Parameter an?
  • Wie ändere ich das Arbeitsverzeichnis?

Dies sieht aus wie eine Django-Umgebung. Sie erhalten möglicherweise bessere Antworten auf stackoverflow.com
Doug Harris

@Doug: Es begann als Django, wurde aber an diesem Punkt großartig verändert. Mein einziges Problem ist jetzt das Skript.
Travis Gockel

Antworten:


2

Sie können dem Interpreter nur ein Argument angeben. Ich glaube auch nicht, dass Sie relative Verzeichnisse verwenden können.

Ich würde vorschlagen, dass Sie das, was Sie tun müssen, in ein Shell-Skript oder ein Python-Skript packen, das Popen () verwendet, um es vielleicht aufzurufen.



1

Vorausgesetzt, ich habe Recht damit, dass Sie sich in einer Django-Umgebung befinden ...

Werfen Sie einen Blick auf James Bennets Artikel über eigenständige Django-Skripte . Schauen Sie sich den Abschnitt über "Use setup_environ ()" an, in dem erwähnt wird, dass dies "genau das ist, wie Djangos eigenes Skript manage.py mit Einstellungen umgeht".

Es gibt eine ähnliche Frage zum Stackoverflow, die Ihnen wahrscheinlich auch weiterhelfen wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.