Где следует размещать общие объектные файлы? - PullRequest
1 голос
/ 11 мая 2011

Я углубляюсь в мир создания привязок C / C ++ для Python с использованием pybindgen. Я выполнил шаги, описанные в разделе «Сборка (инструкции GCC)», чтобы создать привязки для файлов примеров:

http://packages.python.org/PyBindGen/tutorial.html#a-simple-example

Запуск make создает файл .so. Если я пойму, как работают файлы .so, я смогу import перевести классы в общем объекте в Python. Однако я не уверен, где разместить файл и как сообщить Python, где он находится. Кроме того, исходные файлы c / c ++ должны сопровождать файл .so?

До сих пор я пытался поместить файл в / usr / local / lib и добавить этот путь к DYLD_LIBRARY_PATH в .bash_profile. Когда я пытаюсь импортировать модуль из интерпретатора Python, выдается сообщение о том, что модуль не найден.

Итак, мой вопрос: что нужно сделать с сгенерированным файлом .so, чтобы он мог использоваться программой Python?

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Python ищет .so модули в тех же каталогах, где он ищет python.Таким образом, вы должны установить его так же, как обычный модуль Python, либо где-нибудь на sys.path по умолчанию (/usr/share/python/site-lib или что-то в этом роде - это зависит от распределения) или добавить каталог в переменную окружения PYTHONPATH.

Это python, который загружает модуль, используя dlopen, а не динамический компоновщик, поэтому LD_LIBRARY_PATH (обратите внимание, нет DY) вам не поможет.

0 голосов
/ 11 мая 2011

То же, что и все другие модули Python.Он должен находиться в одном из мест, указанных в sys.path.

...