Хобрук: Ваш путь к мастерству в программировании

Oracle DPI-1047 в macOS 10.14.6 с Python 2.7.10

Меня очень озадачивает следующая ситуация: мы с коллегой используем Mac OS X. Я использую 10.15.3, python 2.7.15, GCC 4.2.1, cx_Oracle 7.0.0 с SQL Developer 19.1.0. Она использует 10.14.6, python 2.7.10, GCC 4.2.1, cx_Oracle 7.3.0 с SQL Developer 18.3.0.

У нас есть простой скрипт на Python, который подключается к базе данных через cx_Oracle. У нас обычная ошибка DPI-1047. Я выполнил инструкции здесь https://oracle.github.io/odpi/doc/installation.html#macos и последней 19 "базовой" версией и небольшой настройкой из-за нотариального заверения (https://github.com/oracle/python-cx_Oracle/issues/341#issuecomment-541794557) Я мог бы заставить это работать: файлы .dylib правильно подобран, и код может подключиться к базе данных.

Для моего коллеги файл не может быть найден. Мы выполнили те же шаги, что и для моего компьютера, загрузили сначала 19, а затем 18 «Базовую» версию (наивно полагая, что это будет связано с версией SQL Developer), разархивировали и добавили ссылку на переменную $LD_LIBRARY_PATH. Однако ошибка DPI-1047 все еще появляется.

Мы пытались следовать предыдущим решениям на этом или других форумах, но они не подходили и не работали для нас:

Спасибо за помощь! c.


  • Если вы в порядке с обновлением до Python 3, используйте cx_Oracle 8, в котором есть новая функция init_oracle_client(), в которую вы можете передать каталог Instant Client. См. stackoverflow.com/a/62587663/4799035 27.06.2020

Ответы:


1

Таким образом, у вас есть проблема на компьютере 10.14.6 (Mojave).

Моя первоначальная мысль заключалась в том, что вы используете Python по умолчанию в ОС. Это не сработает, потому что Apple заблокировала его. Из инструкций по установке: «Убедитесь, что вы не используете встроенный Python. Он имеет ограниченные права и не сможет загрузить клиентские библиотеки Oracle». (Я не / не могу рискнуть взломать Instant Client, чтобы посмотреть, можно ли заставить его работать)

Однако откуда появился Python 2.7.10? Моя система по умолчанию - Python 2.7.16.

Не устанавливайте LD_LIBRARY_PATH. Вместо этого в моем каталоге ~ / lib есть только одна символическая ссылка:

libclntsh.dylib -> /Users/cjones/instantclient_19_3/libclntsh.dylib

Все проблемы с конфигурацией связаны с постоянно ужесточающимися требованиями безопасности Apple. Надеюсь, следующий выпуск Oracle Instant Client упростит его использование.

SQL Developer почти полностью не связан с использованием Python cx_Oracle (если вы не используете толстые JDBC-соединения в SQL Developer, что бывает редко).

И не следуйте инструкциям Linux или Windows на macOS!

05.05.2020
  • Спасибо, Кристофер, за этот ответ, я перешлю его своему коллеге. Надеюсь, это действительно решит проблему. 07.05.2020
  • Новые материалы

    Что такое структура данных?
    Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных . Период. Вы можете пропустить оставшуюся часть статьи, если ответ..

    мои январские чтения по программированию
    Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

    Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
    Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

    Искусственный интеллект в юридической отрасли - пример прогнозирования судебных решений с помощью глубокого обучения
    На протяжении всей истории люди полагались на суды, присяжных, королей и королев в отправлении правосудия. Сегодня способность судов обеспечивать справедливое и быстрое правосудие для своих..

    Введение в машинное обучение для обнаружения аномалий (часть 1)
    Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

    Начало работы с Pulumi в Digital Ocean
    Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..

    #Day68 из #100days_of_coding
    Вчера был мой 68-й день кодинга. я решил один вопрос Проблема: Разбить двоичную строку на подстроки с равным количеством нулей и единиц Дана двоичная строка str длины N . Задача состоит..