[英]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.