Не удается импортировать файл .so из-за отсутствия разрешений: не удалось сопоставить сегмент из общего объекта - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь запустить собственный проект, который использует большие части проекта SiamMask . Когда код запускается, один из многих импортов это:

from . import region

находится в файле __init__.py. Он пытается импортировать файл .so с именем region.cpython-36m-x86_64-linux-gnu.so, который находится в том же каталоге, что и файл __init__.py.

Однако, когда я запускаю код, я получаю следующую ошибку:

ImportError: /scratch/[hidden]/project/libs/siamMask/utils/pyvotkit/region.cpython-36m-x86_64-linux-gnu.so: failed to map segment from shared object: Operation not permitted

Я уверен, что эта ошибка вызвана следующим фактом. Рабочий диск, на котором я работаю, который монтируется на сервере GPU, не имеет прямых прав на выполнение для связанных с Python вещей. (В этом нет ничего, что я мог бы изменить). Это также причина, по которой виртуальная среда Python, над которой я работаю, расположена на другом диске (где система имеет разрешения на прямое выполнение для всего, что связано с Python).

Однако у меня вопрос: как я могу импортировать этот .so-файл другим способом, который не мешал бы вышеуказанному факту? Могу ли я перенести файл на другой диск и каким-то образом импортировать его оттуда через этот __init__ файл?

Заранее спасибо!

1 Ответ

0 голосов
/ 24 июня 2019

Мне удалось решить эту проблему следующим образом:

Я переместил файл region.cpython-36m-x86_64-linux-gnu.so на другой диск, на котором может выполняться Python.Затем я использовал следующий код в файле __init__:

import sys

sys.path.append('/path/to/.sofile')

import region
...