Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Журнал Витуса. ([info]lj_vitus_wagner)
@ 2017-12-12 17:57:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Питон и его питонцы
Вот берем python for Windows. Официальный, c www.python.org.
Ставим на машину. Оно там прописывает кучу всего интересного в реестр.
Берем компилируем с этим питоном плагин-dll для большой програмы, работающей как сервис. (это был plpython и postgresql соответственно).

Запускаем (на другой машине, но python там ровно из того же дистрибутива поставлен).

python27.dll грузится. Ну еще бы - оно его в C:\Windows\System32 положило. Поэтому сервис её радостно нашел. Но при попытке обратиться к интерпретатору в лог прилетает

ImportError: module site not found.

Выясняется что надо установить переменную окружения PYTHONHOME. Тогда все работает. Ага, чтобы сервису была доступна, который там от системного юзера работает.

Ну то есть мне, конечно, не в лом вписать в функцию инициализации plpython что-то вроде

#ifdef _WIN32
hklm = RegOpenEx(HKEY_LOCAL_MACHINE);
RegGetValue(hklm,"Software\\Python\\PythonCore\\" #PY_MAJOR_VERSION "." #PY_MINORVERSION "\\InstallationPath",NULL,&pythonhome);
RegClose(hklm)
putenv("PYTHONHOME",pythonhome);
#endif


Но почему этого не сделали авторы самого питона, чтобы их dll-ку можно было груизть из любого места системы?

Upd Согласно документации авторы самого питона так и сделали. Только почему-то оно у меня не работало в 2.7.11. В 2.7.14 работает.

This entry was originally posted at https://vitus-wagner.dreamwidth.org/1954656.html. Please comment there using OpenID. Now there are Image comments


(Читать комментарии) (Добавить комментарий)