我有一个依赖于__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的目录?
答案 0 :(得分:0)
__name__
的值。如果您直接运行该程序,__name__
的值将为"__main__"
。相反,如果您在cProfile下运行它,则值将不同。
修改:我无法复制您的问题。当我尝试时,cProfile似乎不会更改__name__
或__file__
值。您也可以尝试通过调用cProfile.run()
答案 1 :(得分:0)
如果你还有问题,我已经为你找到了解决方案。
path_to_stuff = os.path.join(path.dirname(path.realpath(sys.argv[0])), 'stuff')