如何从外壳中的任何位置获取脚本来确定文件的路径?

时间:2019-10-01 19:27:33

标签: python path package

所以我有一个包装,在这个包装中有我的脚本:

├── foo
│   ├── __init__.py
│   ├── funcs
│   │   ├── __init__.py
│   │   ├── stuff.py
│   ├── resources
│   │   └── haarcascade_frontalface_default.xml
│   ├── scripts
│   │   ├── __init__.py
│   │   └── script.py
└── setup.py

我已将script.py定义为setup.py内部的入口点,它使我可以从外壳中的任何位置以$ script [INPUTS]的身份运行脚本。但是我的script.py依赖于资源下的xml文件。该文件用于创建openCV的cv2.CascadeClassifier的实例,尽管该类将文件的 path 用作参数。问题是我无法执行cv2.CascadeClassifier("../resources/haarcascade_frontalface_default.xml"),因为当以如上所述的脚本运行它时,CascadeClassifier从调用脚本的目录中查找文件希望脚本无论在何处执行都能找到XML文件。

换句话说:

从其自己的目录运行脚本:

$ pwd
Users/admin/foo/scripts
$ script -i something
Works! 
The script was executed from a directory where it managed to locate xml file

从另一个目录运行脚本:

$ cd Users/admin/another_directory
$ script -i something
Failed >:(
Didn't manage to locate xml file...

XML文件和脚本将具有与树中所示相同的相对路径。

堆栈的解决方案是什么?我有点卡住。非常感谢:)

PS:如果解决方案可与鸡蛋配合使用,则表示敬意

0 个答案:

没有答案