На своем рабочем столе я написал небольшое приложение Pylons, которое подключается к Oracle. Теперь я пытаюсь развернуть его на своем сервере, на котором работает Win2k3 x64. (Мой рабочий стол - 32-битная XP) Установка Oracle на сервере также 64-битная.
У меня возникали ошибки при загрузке библиотеки DLL OCI, поэтому я установил 32-битный клиент в C:\oracle32.
Если я добавлю это в переменную среды PATH, все будет отлично. Но я также хочу запустить приложение Pylons как службу (используя этот рецепт) и не хочу помещать эту 32-битную библиотеку в путь для всех других приложений.
Я пробовал использовать sys.path.append("C:\oracle32\bin"), но, похоже, это не сработало.






sys.path - это внутреннее представление PYTHONPATH в Python, мне кажется, что вы хотите изменить PATH.
Не уверен, что это сработает, но вы можете попробовать:
import os
os.environ['PATH'] += os.pathsep + "C:\oracle32\bin"
Да, я думал, что PYTHONPATH специфичен для Python. Этот ответ сработал отлично. Мне просто нужно было убедиться, что линия добавлена до инициализации модели.
Вам необходимо добавить каталог c: \ Oracle32 \ bin в переменную PATH вашей среды перед запуском python.exe.
В Linux мне нужно настроить переменную LD_LIBRARY_PATH по тем же причинам, чтобы найти библиотеки Oracle перед вызовом python. Я использую сценарии оболочки оболочки, которые устанавливают переменную, а затем вызывают Python.
В вашем случае, возможно, вы можете вызвать при запуске службы сценарий .cmd или .vbs, который устанавливает переменную PATH, а затем вызывает python.exe с вашим сценарием .py.
Надеюсь, это поможет!
Если ваше приложение Python работает в 64-битном пространстве, вам потребуется доступ к 64-битной установке Oracle oci.dll, а не к 32-битной версии. Обычно перед запуском сценария необходимо обновить системный путь, включив в него соответствующий каталог bin Oracle Home. Решение также может отличаться в зависимости от того, какой компонент вы используете для доступа к Oracle из Python.
r'C: \ oracle32 \ bin 'поможет избежать некоторых головных болей.