Wenn ich Befehlszeilenparameter an mein Python-Programm über PyCharm übergeben, finde ich sie wie üblich in sys.argv
, aber tf.app.flags.FLAGS
meldet stattdessen leere Zeichenfolgen.Wie kann ich Kommandozeilenparameter über PyCharm an tf.app.flags übergeben?
Wenn ich das gleiche Programm außerhalb von PyCharm (über die Befehlszeile) ausführe, meldet tf.app.flags.FLAGS die erwarteten Werte der Befehlszeilenparameter.
Siehe Screenshot unten, um zu sehen, wie ich Kommandozeilenparameter in PyCharm übergeben.
Hier ist ein kurzes Programm, das das Problem reproduziert:
import tensorflow as tf
from sys import argv
flags = tf.app.flags
FLAGS = flags.FLAGS
# command line flags
flags.DEFINE_string('input', '', "input file (.p)")
def main(_):
print('Parameters', argv)
print('input', FLAGS.input or 'is empty')
# parses flags and calls the `main` function above
if __name__ == '__main__':
tf.app.run()
Wenn ich es von der Kommandozeile ausführen, bekomme ich die erwartete Ausgabe:
python3 issue.py --input my_data.p
Parameters ['issue.py', '--input', 'my_data.p']
input my_data.p
Aber von PyCharm wird input
auf ein Set leere Zeichenkette:
/usr/bin/python3.5 /home/fanta/workspace/CarND-Transfer-Learning-Lab/issue.py "--input my_data.p"
Parameters ['/home/fanta/workspace/CarND-Transfer-Learning-Lab/issue.py', '--input my_data.p']
input is empty
Wie kann ich input
die Co enthalten mmand line Parameter, mit Tensorflow tf.app.flags.FLAGS
und PyCharm?