2016-12-05 58 views
0

時的範圍內我有我的項目main.py腳本運行被組織成一個Python包的模式。項目結構如下所示:IndexError:列表索引超出試圖運行cProflie

project/ 
    model/ 
     data/ 
      ... 
     __init__.py 
     ... 
    tests/ 
     ... 
    main.py 
    integrator.py 
    utils.py 

當我運行的main.py直接即python main.py它工作正常。不過,我想簡介main.py使用:

python -m cProfile -o main.py 

,並出現以下錯誤:

Traceback (most recent call last): 
    File "C:\Users\pbreach\Anaconda3\lib\runpy.py", line 184, in _run_module_as_main 
    "__main__", mod_spec) 
    File "C:\Users\pbreach\Anaconda3\lib\runpy.py", line 85, in _run_code 
    exec(code, run_globals) 
    File "C:\Users\pbreach\Anaconda3\lib\cProfile.py", line 160, in <module> 
    main() 
    File "C:\Users\pbreach\Anaconda3\lib\cProfile.py", line 155, in main 
    parser.print_usage() 
    File "C:\Users\pbreach\Anaconda3\lib\optparse.py", line 1587, in print_usage 
    print(self.get_usage(), file=file) 
    File "C:\Users\pbreach\Anaconda3\lib\optparse.py", line 1573, in get_usage 
    self.expand_prog_name(self.usage)) 
    File "C:\Users\pbreach\Anaconda3\lib\optparse.py", line 1550, in expand_prog_name 
    return s.replace("%prog", self.get_prog_name()) 
    File "C:\Users\pbreach\Anaconda3\lib\optparse.py", line 1545, in get_prog_name 
    return os.path.basename(sys.argv[0]) 
IndexError: list index out of range 

我知道到this answer程度python module.pypython -m module之間的差異(不是很)......但我不確定我在這裏做錯了什麼。從回溯看來,沒有足夠的參數傳遞給腳本,但我不熟悉cProfile。

任何想法,爲什麼這個錯誤是來了呢?我怎樣才能獲得代碼配置文件?

回答

1

您使用的是-o標誌,這意味着它的期待您提供後旗的輸出文件。這也意味着,sys.argv將不包括main.py試試這個:python -m cProfile -o output.txt main.py

爲清楚:

$ python -m cProfile -o output.txt main.py 
# |-----------------| 
# This part is the command 


$ python -m cProfile -o output.txt main.py 
#     |------------| 
# this is a named argument to the command. 


$ python -m cProfile -o output.txt main.py 
#         |-------| 
# this is a positional argument to the command. 
+0

啊。好的,我應該從回溯中挑選出來。只是認爲它會因爲某種原因導致某些進口相關的事情(最近很多事情都在苦苦掙扎)。 – pbreach

相關問題