ctypes на окнах: зависимости dll не найдены - PullRequest
3 голосов
/ 16 августа 2011

Я пытаюсь загрузить общую библиотеку "R.dll", которая зависит от "Rblas.dll", оба находятся в одном каталоге.Когда я загружаю R.dll с помощью ctypes (модуль python, который загружает разделяемые библиотеки)

import ctypes
lib = ctypes.CDLL("/path_to_r/bin/i386/R.dll")

, я получаю сообщение об ошибке, в котором говорится, что «Rblas.dll» не найден.

Что я могу сделать?Я думал, что достаточно поместить обе библиотеки в один каталог.

1 Ответ

4 голосов
/ 16 августа 2011

Вам может понадобиться добавить путь, по которому находятся dll, в переменную окружения% PATH%. Пока R.DLL загружается с явным путем, поиск по его запросу RBLAS.DLL все еще ищет в% PATH% его местоположение. Поскольку это операция на уровне Windows, нет простого способа перехватить и изменить его из python ... поэтому требуется изменение% PATH%.

Хотя поочередно, вы можете временно os.chdir в нужный каталог, загрузить dll и восстановить первоначальное значение os.getcwd после загрузки dll.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...