当我通过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
包含命令行参数?
答案 0 :(得分:5)
不要将脚本参数放入引号"..."
。只需写下
--input_data my_data.p
在屏幕截图中的Script Parameter
字段中。