2015-03-12 2 views
3

cx_Oracle для Python требует, чтобы определенные переменные среды были установлены на месте, чтобы импортировать и работать правильно. Вместо того, чтобы пытаться обернуть мое приложение в скрипт bash, который я делал в прошлом, я пытаюсь настроить переменные, используя только Python.Настройка cx_Oracle Экологические переменные с 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.

Edit, Ниже то, что я обычно добавить к моим Баш оберток:

#!/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) 
+0

Я нашел аналогичную дискуссию здесь: http://stackoverflow.com/questions/3348894/deploying-cx-oracle-onto-various-versions-of-oracle-client – Riju

ответ

3

Это скорее всего, этот вопрос уже ответил на этот сайт: How to change environment variables in python? Я цитирую принятый ответ:

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

Смежные вопросы