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

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

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__ файл?

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
2 143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

import sys

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

import region

Другие вопросы по теме