У меня есть приложение, написанное на Python, которое использует Ogre3D через модуль оболочки C++. При попытке запуска моего приложения,Могу ли я установить @executable_path из Python
python /path/to/myapp.py
Я получаю ошибку
dlopen (./ MyOgreWrapper.so, 2): Библиотека не загружен: @executable_path /../ Каркасы/Ogre.framework /Versions/1.9.0/Ogre Реферировано от: /path/to/MyOgreWrapper.so Причина: изображение не найдено
Я бегу из каталога, где MyOgreWrapper.so расположен так, что MyOgreWrapper.so может можно найти на Python. Ogre.framework находится в ../Frameworks относительно местоположения MyOgreWrapper.so.
$otool -l MyOgreWrapper.so
MyOgreWrapper.so:
@rpath/MyOgreWrapper.so (compatibility version 0.0.0, current version 0.0.0)
@executable_path/../Frameworks/Ogre.framework/Versions/1.9.0/Ogre (compatibility version 1.9.0, current version 1.9.0)
...
Я подозреваю, что это происходит потому, что @executable_path устанавливается на путь питона исполняемого файла.
Есть ли способ настроить среду из Python так, чтобы @executable_path был текущим каталогом?
(Я знаю, что все это сработает, если я изменю путь для Ogre в MyOgreWrapper.so и еще несколько зависимостей от @loader_path, но это не то, как это получается из коробки, и я бы предпочел не иметь сделайте это.)
Я думаю, что [это] (http://stackoverflow.com/questions/4934806/python-how-to-find-scripts-directory) - это то, что вы ищете. – Travis