IndexError: list index out of range when trying to run cProflie
IndexError: list index out of range when trying to run cProflie
我的项目中有一个 main.py
脚本,它 运行 是一个组织到 python 包中的模型。项目结构如下所示:
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
我知道 python module.py
和 python -m module
之间的区别 (不是很清楚)......但我不确定我在做什么这里错了。从回溯来看,似乎没有足够的参数传递给脚本,但我对 cProfile 不太熟悉。
关于为什么会出现此错误的任何想法?我怎样才能获得配置文件的代码?
您正在使用 -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.
我的项目中有一个 main.py
脚本,它 运行 是一个组织到 python 包中的模型。项目结构如下所示:
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
我知道 python module.py
和 python -m module
之间的区别
关于为什么会出现此错误的任何想法?我怎样才能获得配置文件的代码?
您正在使用 -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.