繁体   English   中英

获取顶级 Python 脚本的路径

[英]Getting path of the top-level Python script

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

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

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

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

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

将 kivy.resources 导入为 kr

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM