当我通过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
如何input
使用Tensorflow tf.app.flags.FLAGS
和PyCharm 来包含命令行参数?
不要将脚本参数放入引号"..."
.写吧
--input_data my_data.p
在Script Parameter
屏幕截图中的字段中.