所以我有一个包装,在这个包装中有我的脚本:
├── 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:如果解决方案可与鸡蛋配合使用,则表示敬意