установить cx_oracle для python - PullRequest
31 голосов
/ 29 ноября 2010

Я на 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

Есть идеи, что я здесь упустил?

Ответы [ 10 ]

67 голосов
/ 25 марта 2012

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

  1. * 1007 зависимости *

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

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

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

    files preview

  3. Извлечение zip-файлов

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

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

    Создайте файл в /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
    

    Примечание. Для применения настроек может потребоваться перезагрузка

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

    cd $ORACLE_HOME 
    ln -s libclntsh.so.11.1 libclntsh.so
    
  6. Установка cx_Oracle Пакет Python

    • Вы можете установить, используя pip

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

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

      python setup.py build 
      python setup.py install
      
11 голосов
/ 30 ноября 2010

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

В моем случае единственная переменная env, которая мне нужна, это LD_LIBRARY_PATH, поэтому я сделал:1009 * Полагаю, в вашем случае переменная пути будет /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib.

4 голосов
/ 27 июня 2017

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

python -m pip install cx_Oracle --pre

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

4 голосов
/ 11 сентября 2013

Спасибо, Бурхан Халид, я пропустил твою цитату "Ты должен быть root", но нашел способ, когда ты не root здесь .

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

sudo env ORACLE_HOME=$ORACLE_HOME python setup.py install 

или

sudo env ORACLE_HOME=/path/to/instantclient python setup.py install
2 голосов
/ 30 марта 2017

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

Напомним:

  1. Вам нужна базовая версия и SDK-версия мгновенного клиента

  2. Вам необходимо установить и LD_LIBRARY_PATH, и ORACLE_HOME

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

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

2 голосов
/ 09 октября 2013

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

sudo visudo

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

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

тогда

sudo python setup.py build install

1 голос
/ 15 января 2018

В качестве альтернативы вы можете установить модуль 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 install

0 голосов
/ 11 июля 2019

Это сработало для меня

python -m pip install cx_Oracle --upgrade

Подробнее см. Краткое руководство оракула

.

https://cx -oracle.readthedocs.io / о / последние / installation.html # быстрого старт-ая-оракул установка

0 голосов
/ 06 ноября 2018

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

Слишком много проблем с настройкой переменных среды. У меня это сработало.

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

Спасибо

0 голосов
/ 28 марта 2018

Это просто сработало для меня на 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 ... Наслаждайтесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...