获取顶级Python脚本的路径

时间:2019-06-16 15:47:45

标签: python

我想获取被调用(顶级)Python脚本的路径。实际上,这是一个程序包,我正在使用python3 -m <package-name>运行它。我研究了Web和Stack Overflow,但是找不到合适的解决方案。 __file____path__不起作用,如果从另一个位置调用该包,则os.getcwd()不起作用,不能保证sys.argv[0]具有完整路径。我认为import __main__的方式不是一个好方法,因为我将顶级脚本导入到相关脚本中。

1 个答案:

答案 0 :(得分:-1)

我遇到了open("xyz.dat","r")在.py文件所在的文件夹中找不到xyz.dat的问题

通过将 "working_dir": "$file_path" 添加到我的 Sublime Text 3 构建脚本解决了我的问题。

然而,我想知道 python 库是如何做到的。例如,Kivy 的 AsyncImage 对其构造函数有一个“source”参数,它可以成功找到与顶级 py 文件位于同一文件夹中的图像文件。

经过一番挖掘,我发现了 Kivy 使用的方法:

<块引用>

将 kivy.resources 导入为 kr

full_path = kr.resource_find("image.png")

我不喜欢依赖构建脚本中的设置来查找同一文件夹中的文件,因此这是我将在以后的 Kivy 项目中遵循的方法。

顺便说一句,resource_find 确实依赖 sys.argv[0] 来“知道”顶级 python 脚本的完整路径。