Seite 1 von 1

Flask - Befehlszeilenparser abschalten

Verfasst: Freitag 29. Dezember 2017, 21:38
von Matter_Horn
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

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Freitag 29. Dezember 2017, 23:39
von Sirius3
@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?

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Samstag 30. Dezember 2017, 22:41
von Matter_Horn
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

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Samstag 30. Dezember 2017, 22:57
von Sirius3
@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??

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Samstag 30. Dezember 2017, 23:48
von Matter_Horn
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.

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Sonntag 31. Dezember 2017, 00:00
von Sirius3
@Matter_Horn: nein, solange Du flask_script verwendest, wirst Du das Skript mit den Argumenten aufrufen.

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Sonntag 31. Dezember 2017, 00:10
von Matter_Horn
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

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Sonntag 31. Dezember 2017, 00:37
von Sirius3
@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.

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Sonntag 31. Dezember 2017, 01:32
von Matter_Horn
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

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Sonntag 31. Dezember 2017, 08:30
von noisefloor
Hallo,

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

Gruß, noisefloor

Re: Flask - Befehlszeilenparser abschalten

Verfasst: Sonntag 31. Dezember 2017, 09:13
von Sirius3
@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“?