gpt4 book ai didi

python - 运行 tf.app.run() 时抛出异常

转载 作者:行者123 更新时间:2023-12-03 19:26:03 29 4
gpt4 key购买 nike

我现在正在玩标志,在使用 tf.app.run() 时遇到了一些奇怪的行为。 .下面的代码片段应该简单地打印通过命令行给出的字符串。

import tensorflow as tf

# command line flags
tf.app.flags.DEFINE_string('mystring', 'Hello World!',
'''String to print to console.''')

FLAGS = tf.app.flags.FLAGS


def main():

print(FLAGS.mystring)

if __name__ == '__main__':
tf.app.run()

在执行过程中,抛出此错误:

Traceback (most recent call last):

File "", line 1, in runfile('/path/flags.py', wdir='/path')

File "/home/abc/anaconda3/envs/tensorflow/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 710, in runfile execfile(filename, namespace)

File "/home/abc/anaconda3/envs/tensorflow/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 101, in execfile exec(compile(f.read(), filename, 'exec'), namespace)

File "/path/flags.py", line 19, in tf.app.run()

File "/home/abc/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/platform/app.py", line 126, in run _sys.exit(main(argv))

TypeError: main() takes 0 positional arguments but 1 was given



...这很奇怪,因为我没有给 main() 一个参数。但是,如果我添加下划线 def main(_): ,它可以正常工作,没有任何错误。

我找不到描述使用下划线的文档。有人知道这里发生了什么吗?谢谢!

最佳答案

当我执行你的代码时,我在 Pycharm IDE 中看到的错误信息更清晰。

Traceback (most recent call last):
File "D:/PycharmProjects/TensorFlow/self.py", line 30, in <module>
tf.app.run()
File "D:\\Anaconda\envs\tensorflow\lib\site-packages\tensorflow\python\platform\app.py",
line 48, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
TypeError: main() takes 0 positional arguments but 1 was given
_sys.exit(main(_sys.argv[:1] + flags_passthrough))试图用一个参数调用我们的 main 方法。

这是 app.py中的run方法

可以使用 run 方法的精简版本进行测试。

import tensorflow as tf
import sys as _sys
from tensorflow.python.platform import flags


# command line flags
tf.app.flags.DEFINE_string('mystring', 'Hello World!',
'''String to print to console.''')

FLAGS = tf.app.flags.FLAGS

def run(main=None, argv=None):
"""Runs the program with an optional 'main' function and 'argv' list."""
f = flags.FLAGS

# Extract the args from the optional `argv` list.
args = argv[1:] if argv else None

# Parse the known flags from that list, or from the command
# line otherwise.
# pylint: disable=protected-access
flags_passthrough = f._parse_flags(args=args)
# pylint: enable=protected-access

main = main or _sys.modules['__main__'].main

print (_sys.argv[:1])

# Call the main function, passing through any arguments
# to the final program.
#_sys.exit(main(_sys.argv[:1] + flags_passthrough))

# Call the main function with no arguments
#_sys.exit(main())


def main():
print(FLAGS.mystring)

if __name__ == '__main__':
#tf.app.run()
run()
print(_sys.argv[1:])版画 ['D:/PycharmProjects/TensorFlow/self.py']自从
argv[0] 是传递给解释器的脚本名称。

关于python - 运行 tf.app.run() 时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51266268/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com