Настройка переменных среды cx_Oracle с помощью Python

cx_Oracle для Python требует установки определенных переменных среды для импорта и правильной работы. Вместо того, чтобы пытаться обернуть свое приложение в сценарий bash, что я делал в прошлом, я пытаюсь настроить переменные, используя только Python.

Ниже то, что у меня есть на данный момент.

# Check if OS environment variables are setup.
if 'ORACLE_HOME' not in os.environ.keys():
    os.environ['ORACLE_HOME'] = '/usr/lib/oracle/12.1/client64'
if 'LD_LIBRARY_PATH' not in os.environ.keys():
    os.environ['LD_LIBRARY_PATH'] = os.environ['ORACLE_HOME'] + '/lib'
if '/usr/lib/oracle' not in os.environ['PATH']:
    os.environ['PATH'] = os.environ['ORACLE_HOME'] + '/bin:' + os.environ['PATH']

import cx_Oracle

К сожалению, я все еще получаю исключение от cx_Oracle, которое в основном означает, что переменные настроены неправильно.

Я также пытался использовать subprocess.Popen() и subprocess.call() для прямого вызова экспорта, но я не уверен, что они просто не работают, или я неправильно понимаю эти функции.

Как лучше всего настроить эти переменные, чтобы я мог импортировать cx_Oracle, используя только Python 3.

Изменить. Ниже приведено то, что я обычно добавляю в свои оболочки bash:

#!/bin/sh

# Initialize Environmental Variables for cx_Oracle
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH

(Python Script)

person user2004245    schedule 12.03.2015    source источник
comment
Я нашел подобное обсуждение здесь: stackoverflow.com/questions/3348894/   -  person Ned_the_Dolphin    schedule 23.01.2017


Ответы (1)


Вероятно, на этот вопрос уже был дан ответ на этом сайте: Как изменить переменные среды в python? Я цитирую принятый ответ:

Вы можете установить их таким образом, однако $LD_LIBRARY_PATH читается загрузчиком, который уже был запущен до этого, поэтому вы должны заранее установить его извне.

person baldr    schedule 13.03.2015