Установить 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
Любая идея, что я пропустил здесь?
Ответы
Ответ 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, используя следующие шаги
- Загрузите исходный код здесь https://pypi.python.org/pypi/cx_Oracle [cx_Oracle-6.1.tar.gz]
-
Извлеките tar, используя следующие команды (Linux)
gunzip cx_Oracle-6.1.tar.gz
tar -xf cx_Oracle-6.1.tar
-
cd cx_Oracle-6.1
-
Построить модуль
python setup.py build
-
Установите модуль
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. это начнет работать.
Существует слишком много проблем с настройкой переменных среды. Это сработало для меня.
Надеюсь это поможет.
Спасибо
Ответ 10
Это сработало для меня
python -m pip install cx_Oracle --upgrade
За подробностями обращайтесь к краткому руководству Oracle.
https://cx-oracle.readthedocs.io/en/latest/installation.html#quick-start-cx-oracle-installation