Итак, у меня есть пакет, и в этом пакете у меня есть мой скрипт:
├── 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-файл, расположенный под ресурсами. Файл используется для создания экземпляра cv2.CascadeClassifier
в openCV, хотя класс принимает в качестве аргумента путь файла. Проблема в том, что я не могу сделать 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
Запуск сценария из другогоdirectory:
$ cd Users/admin/another_directory
$ script -i something
Failed >:(
Didn't manage to locate xml file...
XML-файл и сценарий будут иметь одинаковый относительный путь, как показано в дереве.
Какое здесь решение, стек? Я немного застрял. Очень признателен:)
PS: слава, если решение работает с яйцом