cProfile似乎覆盖了正常的值,如何适应?

2024-04-26 11:51:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序,它依赖于__file__内置全局来提供与程序相关联的数据的路径,如path_to_stuff = os.path.join(os.path.dirname(__file__),'stuff')。问题是,当我用python -m cProfile myprog运行这个函数时,__file__的值不再是myprog的路径,而是(显然)到cProfile模块的路径,我的东西肯定不是

我读过the manual并在这里搜索,但没有看到任何关于此的内容。有没有一种方法可以(a)让cProfile保持__file__单独使用,或者(b)在运行时知道我在cProfile下运行,这样在这种特殊情况下可以用文本字符串初始化路径?在

编辑:或者,我想,(c),有没有更好的方法可以找到一个始终在program.py?在


Tags: to数据path方法路径程序os全局
2条回答

(b)似乎很容易做到。在你的程序.py,检查__name__的值。如果您直接运行程序,__name__的值将是"__main__"。相反,如果在cProfile下运行它,则值将不同。在

编辑:我无法复制您的问题。当我尝试时,cProfile似乎不会更改__name__或{}值。也可以通过调用cProfile.run()在脚本中运行探查器

如果你还有问题,我已经为你找到了解决办法。在

path_to_stuff = os.path.join(path.dirname(path.realpath(sys.argv[0])), 'stuff')

相关问题 更多 >