Flask - Befehlszeilenparser abschalten

Django, Flask, Bottle, WSGI, CGI…
Antworten
Matter_Horn
User
Beiträge: 14
Registriert: Sonntag 26. November 2017, 20:55

Hallo,

arbeite gerade die Beispiele aus dem Buch Flask Web Development durch. Nach Installation des Flask-Script (pip install flask-script)
funktioniert das einfache Kommando python hello.py nicht mehr, es werden zusätzliche Argumente erwartet.

Wie kann ich Flask-Script oder die zusätzlichen Argumente in der Befehlszeile abschalten?

Vielen Dank für eine Antwort.

Grüße
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Matter_Horn: die Warnung bei flask-skript ist eigentlich nicht zu übersehen:
Deprecated
While the maintainers are willing to merge PR's, they are not actively developing features. As of Flask 0.11, Flask includes a built-in CLI tool, and that may fit your needs better.
Da stellt sich halt immer die Frage, was es bringt, mit einem Buch, das veraltete Module verwendet, zu lernen?

Ansonsten verstehe ich Deine Frage nicht. Was ist »hello.py«? Und welche zusätzlichen Argumente gibt es?
Matter_Horn
User
Beiträge: 14
Registriert: Sonntag 26. November 2017, 20:55

Hallo,

arbeite die Beispiele aus dem Buch "Flask Web Development" von Miguel Grinberg First Edition von May 2014 durch. Habe dazu das repository (auch first edition) von GitHub heruntergeladen. hello.py ist dabei ein Bespielprogramm des repository, das sich durch die Kapitel zieht und mit Git check xx immer weitergeschaltet wird.

Bin jetzt bei Beispiel 2c - (Git checkout 2c)
Dafür werden Flask Extensions benötigt die mit pip install flask-script installiert wurden.

Das Beispiel 2c soll wie folgt ausgeführt werden: python hello.py runserver --host 0.0.0.0

Habe inzwischen auf das nächste Beispiel umgeschlaltet (Git ckeckout 3a). Hier soll der Einsatz von templates gezeigt werden.

Beim Aufruf von python hello.py erfolgt

usage: hello.py [-?] {shell, runserver} ...
positional arguments:
{shell, runserver}
shell Runs a Python shell inside Flask application context
runserver Runs the Flask development server i.e. app.run()
optional arguments:
-?, -- help show this help and exit


Meine Flask Version: flask-0.12.2.

Wäre gerne bereit, eine andere Dokumentation (Buch) für das Erlernen der Programmierung von Webanwendungen zu benutzen - wo finde ich denn was Aktuelles?

Grüße
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Matter_Horn: und wo ist jetzt das Problem? Das Skript erwartet zusätzliche Argumente, die sind auch angegeben! Warum willst Du es dann nicht so aufrufen, wie es vorgesehen ist??
Matter_Horn
User
Beiträge: 14
Registriert: Sonntag 26. November 2017, 20:55

Beispiel 2c aufgerufen mit Argumenten wäre so ja ok.

Aber das nächste Bespiel hello.py:

from flask import Flask, render_template
from flask_script import Manager

app = Flask(__name__)

manager = Manager(app)


@app.route('/')
def index():
return render_template('index.html')


@app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name)


if __name__ == '__main__':
manager.run()


sollte doch mit python hello.py ausführbar sein?
Es kommen aber die usage Hinweise.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Matter_Horn: nein, solange Du flask_script verwendest, wirst Du das Skript mit den Argumenten aufrufen.
Matter_Horn
User
Beiträge: 14
Registriert: Sonntag 26. November 2017, 20:55

Das ist ja mein Problem: Wie kann ich "flask_script" deaktivieren oder löschen?

Für die nächsten Beispiele wir es wohl nicht gebraucht.
Oder eine neue virtuelle Umgebung erzeugen ohne flask script?

Grüße
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Matter_Horn: wenn es in den Beispielen benutzt wird, dann wird es wohl gebraucht. Wenn nicht, dann muß man es auch nicht deinstallieren, weil dann wird es ja nicht benutzt. Du siehts da ein Problem, das nicht existiert.
Matter_Horn
User
Beiträge: 14
Registriert: Sonntag 26. November 2017, 20:55

Das bereitgestellte Beispiel beinhaltet folgenden Code:

from flask import Flask, render_template
from flask_script import Manager

app = Flask(__name__)

manager = Manager(app)

@app.route('/')
def index():
return render_template('index.html')

@app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name)

if __name__ == '__main__':
manager.run()

Ruft man python hello.py auf, erfolgt der Hinweis Usage ... mit den Argumenten.

Wird "from flask_script import Manager" und die "Manager"-betreffenden Zeilen entfernt wird der Code ausgeführt.

Buch und repository scheinen weit auseinander zu liegen.

Bin dankbar für jeden Hinweis um eine bessere/aktuellere Dokumentation zu finden.

Grüße
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

bzgl der Doku: die Doku der Entwickler von Flask ist eigentlich ziemlich umfangreich und ausführlich.

Gruß, noisefloor
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Matter_Horn: jetzt hast Du ja herausgefunden, für was Manager im Moment verwendet wird. Aber ich glaube kaum, dass das Buch für ein Beispiel ein weiteres Paket einführt, um es gleich danach wieder zu vergessen und nur das Repository es nicht mitgekriegt hat. Also nochmal, was ist das Problem hello.py mit Argumenten aufzurufen? Steht im Buch explizit: „jetzt wieder ohne Argumente arbeiten“?
Antworten