如何通过PyCharm将命令行参数传递给tf.app.flags?

时间:2017-03-25 12:43:48

标签: tensorflow pycharm

当我通过PyCharm将命令行参数传递给我的Python程序时,我会像往常一样在sys.argv中找到它们,但是tf.app.flags.FLAGS会报告空字符串。

如果我在PyCharm外部运行相同的程序(从命令行),则tf.app.flags.FLAGS会报告预期的命令行参数值。

请参阅下面的屏幕截图,了解我如何在PyCharm中传递命令行参数。

这是一个重现问题的简短程序:

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()

如果我从命令行运行它,我得到预期的输出:

python3 issue.py --input my_data.p
Parameters ['issue.py', '--input', 'my_data.p']
input my_data.p

但是从PyCharm,input被设置为空字符串:

/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

如何使用Tensorflow的input和PyCharm让tf.app.flags.FLAGS包含命令行参数?

enter image description here

1 个答案:

答案 0 :(得分:5)

不要将脚本参数放入引号"..."。只需写下

--input_data my_data.p

在屏幕截图中的Script Parameter字段中。