2017-04-11 25 views
1

您好我正在運行通過谷歌提供的/ models-master/tutorials/image/cifar10示例在https://github.com/tensorflow/models用tensorflow調試pudb argv

我在虛擬環境中運行tensorflow-1.0.1和python 3.5。

從命令行,並在virtualenv,運行: python3 cifar10_train.py 工作正常。

但是當我嘗試: pudb3 cifar10_train.py

我得到這個錯誤:

Traceback (most recent call last):
File "~/interpreters/p35/lib/python3.5/site-packages/tensorflow/python/platform/app.py", line 44, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
TypeError: main() takes 0 positional arguments but 1 was given

檢查ARGS給出:

print (_sys.argv[:1])
['cifar10_train.py']
print (flags_passthrough)
[ ]

我知道pudb是在同一的virtualenv它從命令行運行代碼,因爲pudb通過tensorflow導入正常,而virtualenv是tensorflow軟件包駐留的唯一位置。

我假定這是一些問題與某些層pudb介紹...之間傳遞沒有任何人有通過這個得到一個快速的建議...我只是想步執行代碼:)

謝謝,

nt

+0

此外,向cifar10_train.py添加打印語句並再次從命令行運行(成功)顯示main獲取與pudb中相同的參數。 – alphaXed

回答

0

我在使用pudb和TensorFlow時遇到了同樣的問題。它與tf.flags有關。我只使用python的Argparse類而不是tf.flags。

作爲一種替代方案,我相信你可以保留tf.flags,並在導入tensorflow後在代碼中添加from pudb import set_trace; set_trace()。打電話給你的腳本python script.py沒有-m pudb它不應該嚇壞了。

0

維加的建議工作......謝謝。之後,我會率最高的評論,但我得到了< 15個名聲......還有什麼是新的:)

所以按照維加...

包括「從pudb進口set_trace」 「將tensorflow導入爲tf」語句。然後加入set_trace()如下...

def main(argv=None): # pylint: disable=unused-argument 
    cifar10.maybe_download_and_extract() 
    if tf.gfile.Exists(FLAGS.train_dir): 
    tf.gfile.DeleteRecursively(FLAGS.train_dir) 
    tf.gfile.MakeDirs(FLAGS.train_dir) 
    train() 


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

調用的命令行腳本: python3 cifar10_train.py

而且它的工作達到目標。

PuDB看起來像它將成爲一個偉大的工具。