Подтвердить что ты не робот

Установить cx_oracle для python

Am на Debian 5, я пытаюсь установить модуль cx_oracle для python без каких-либо успехов. Во-первых, я установил oracle-xe-client и его зависимость (следуя инструкциям в следующей ссылке здесь).

Затем я использовал сценарии в /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin для заполнения переменных среды, таких как PATH, ORACLE_HOME и NLS_LANG.

Как только это было завершено, я попытался запустить:

sudo easy_install cx_oracle

Но я продолжаю получать следующую ошибку:

Searching for cx-oracle
Reading http://pypi.python.org/simple/cx_oracle/
Reading http://cx-oracle.sourceforge.net
Reading http://starship.python.net/crew/atuining
Best match: cx-Oracle 5.0.4
Downloading http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-5.0.4.tar.gz?download
Processing cx_Oracle-5.0.4.tar.gz
Running cx_Oracle-5.0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-xsylvG/cx_Oracle-5.0.4/egg-dist-tmp-8KoqIx
error: cannot locate an Oracle software installation

Любая идея, что я пропустил здесь?

4b9b3361

Ответ 1

Я рекомендую вам захватить файлы rpm и установить их с помощью чужого. Таким образом, вы можете позже запустить apt-get purge no-longer-needed.

В моем случае единственная переменная env, в которой я нуждалась, - LD_LIBRARY_PATH, поэтому я сделал:

echo export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib >> ~/.bashrc
source ~/.bashrc

Я полагаю, в вашем случае, что переменная пути будет /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib.

Ответ 2

Альтернативный способ, который не требует RPM. Вы должны быть root.

  • Зависимости

    Установите следующие пакеты:

    apt-get install python-dev build-essential libaio1
    
  • Загрузить Instant Client для Linux x86-64

    Загрузите следующие файлы из Oracle скачать сайт:

    просмотр файлов

  • Извлечь zip файлы

    Разархивируйте загруженные zip файлы в какой-либо каталог, я использую:

    /opt/ora/
    
  • Добавить переменные среды

    Создайте файл в /etc/profile.d/oracle.sh, который включает

    export ORACLE_HOME=/opt/ora/instantclient_11_2
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
    

    Создайте файл в /etc/ld.so.conf.d/oracle.conf, который включает

    /opt/ora/instantclient_11_2
    

    Выполните следующую команду

    sudo ldconfig
    

    Примечание: вам может потребоваться перезагрузка, чтобы применить настройки

  • Создать символическую ссылку

    cd $ORACLE_HOME 
    ln -s libclntsh.so.11.1 libclntsh.so
    
  • Установить cx_Oracle пакет python

    • Вы можете установить с помощью pip

      pip install cx_Oracle
      
    • Или установите вручную

      Загрузите cx_Oracle source zip, который соответствует вашей версии Python и Oracle. Затем разверните архив и запустите из извлеченного каталога:

      python setup.py build 
      python setup.py install
      

Ответ 3

спасибо Burhan Khalid, я забыл вашу цитату "Вы должны быть root", но нашел способ, когда вы не являетесь корневым здесь.

В точке 7 вам нужно использовать:

sudo env ORACLE_HOME=$ORACLE_HOME python setup.py install 

Или

sudo env ORACLE_HOME=/path/to/instantclient python setup.py install

Ответ 4

Для меня работали как на Mac, так и на Linux. Эта одна команда должна загружать необходимые дополнительные файлы, без необходимости устанавливать переменные среды.

python -m pip install cx_Oracle --pre

Примечание. Параметр - pre предназначен для разработки и предварительного выпуска драйвера Oracle. Начиная с этой публикации, он захватывал cx_Oracle-6.0rc1.tar.gz, что было необходимо. (Я использую python 3.6)

Ответ 5

Я думаю, что у sudo нет доступа для получения ORACLE_HOME. Вы можете сделать это следующим образом.

sudo visudo

изменить текст добавить

По умолчанию env_keep + = "ORACLE_HOME"

затем

sudo python setup.py build install

Ответ 6

Спасибо Бурхан Халид. Ваш совет, чтобы сделать мягкую ссылку, делает мою установку, наконец, работать.

Повторить:

  • Вам нужна как базовая версия, так и версия клиентского программного обеспечения SDK

  • Вам нужно установить LD_LIBRARY_PATH и ORACLE_HOME

  • Вам нужно создать мягкую ссылку (ln -s libclntsh.so.12.1 libclntsh.so в моем случае)

Ничто из этого не документировано нигде, что совершенно невероятно и довольно сложно. Вчера я провел более 3 часов с неудачными сборками, потому что я не знал, чтобы создать мягкую ссылку.

Ответ 7

В качестве альтернативы вы можете установить модуль cx_Oracle без PIP, используя следующие шаги

  1. Загрузите исходный код здесь https://pypi.python.org/pypi/cx_Oracle [cx_Oracle-6.1.tar.gz]
  2. Извлеките tar, используя следующие команды (Linux)

    gunzip cx_Oracle-6.1.tar.gz

    tar -xf cx_Oracle-6.1.tar

  3. cd cx_Oracle-6.1

  4. Построить модуль

    python setup.py build

  5. Установите модуль

    Python setup.py установить

Ответ 8

Это только сработало для меня на Ubuntu 16:

Загрузите ('instantclient-basic-linux.x64-12.2.0.1.0.zip' и 'instantclient-sdk-linux.x64-12.2.0.1.0.zip') с веб-сайта Oracle, а затем выполните следующий сценарий (вы можете делай по частям а я делал как КОРЕНЬ)

apt-get install -y python-dev build-essential libaio1
mkdir -p /opt/ora/
cd /opt/ora/

## Now put 2 ZIP files:
# ('instantclient-basic-linux.x64-12.2.0.1.0.zip' and 'instantclient-sdk-linux.x64-12.2.0.1.0.zip') 
# into /opt/ora/ and unzip them -> both will be unzipped into 1 directory: /opt/ora/instantclient_12_2 

rm -rf /etc/profile.d/oracle.sh
echo "export ORACLE_HOME=/opt/ora/instantclient_12_2"  >> /etc/profile.d/oracle.sh
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME"  >> /etc/profile.d/oracle.sh
chmod 777 /etc/profile.d/oracle.sh
source /etc/profile.d/oracle.sh
env | grep -i ora  # This will check current ENVIRONMENT settings for Oracle


rm -rf /etc/ld.so.conf.d/oracle.conf
echo "/opt/ora/instantclient_12_2" >> /etc/ld.so.conf.d/oracle.conf
ldconfig
cd $ORACLE_HOME  
ls -lrth libclntsh*   # This will show which version of 'libclntsh' you have... --> needed for following line:

ln -s libclntsh.so.12.1 libclntsh.so

pip install cx_Oracle   # Maybe not needed but I did it anyway (only pip install cx_Oracle without above steps did not work for me...)

Теперь ваши скрипты на python готовы к использованию cx_Oracle... Наслаждайтесь!

Ответ 9

Если вы пытаетесь установить в MAC, просто разархивируйте загруженный вами клиент Oracle и поместите его в папку, где вы написали скрипты Python. это начнет работать.

Существует слишком много проблем с настройкой переменных среды. Это сработало для меня.

Надеюсь это поможет.

Спасибо