Разверните Instant Oracle на Pivotal CloudFoundry для cx_Oracle

поэтому я пытаюсь использовать python API с зависимостью cx_oracle, для которой также нужен мгновенный клиент oracle, но я не смог найти учебник по развертыванию мгновенного клиента на pcf, кто-нибудь когда-либо делал это раньше или есть какой-либо пример, что нужно сделать? ценить это

Обновлять:

Это внутри моего .profile

LD_LIBRARY_PATH=/home/vcap/app/oracle/instantclient:${LD_LIBRARY_PATH:-}
export OCI_LIB_DIR=/home/vcap/app/oracle/instantclient
export OCI_INC_DIR=/home/vcap/app/oracle/instantclient/sdk/include
export PYTHONPATH=/home/vcap/app/vendor:$PYTHONPATH
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib

person Beavis Luckyano    schedule 10.07.2020    source источник
comment
Просто используйте установщик zip, а не менеджер пакетов. Извлеките файлы в подпапку вашего приложения, например oracle/. Установите cx-Oracle как обычно с помощью pip. Сгенерируйте требования.txt. Добавьте файл .profile в корень вашего приложения, в нем укажите export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/vcap/app/oracle/lib (или путь, куда вы установили клиентские библиотеки Oracle). Затем нажмите ваше приложение. Файл .profile изменит путь поиска библиотек, чтобы можно было найти клиентские библиотеки Oracle, он запускается до запуска вашего приложения. Дайте мне знать, если вы где-то застряли.   -  person Daniel Mikusa    schedule 11.07.2020
comment
спасибо за ответ, я немного запутался насчет мгновенного оракула, поэтому я должен извлечь его из папки проекта, верно? а по поводу файла с расширением .profile, как называется файл? и я должен добавить это к требованию? @ДаниэльМикуса   -  person Beavis Luckyano    schedule 15.07.2020
comment
Да, извлеките клиент Oracle Instant во вложенную папку вашего проекта. Мне нравится называть свой oracle/, но вы можете назвать его как хотите. .profile — это точное имя, которое вам нужно использовать для файла. Это не расширение. Если вы используете Windows, убедитесь, что Windows не добавляет скрытое расширение. Имя файла должно быть точно .profile и должно находиться в корне папки вашего проекта, где вы запускаете cf push.   -  person Daniel Mikusa    schedule 16.07.2020
comment
@DanielMikusa спасибо за советы, я уже пытаюсь запустить его, и это удается, но я вижу это в своем журнале приложений cx_Oracle.DatabaseError: DPI-1047: не удается найти 64-разрядную клиентскую библиотеку Oracle: /home/vcap/app/oracle /instantclient/libclntsh.so: слишком короткий файл   -  person Beavis Luckyano    schedule 22.07.2020
comment
Похоже, загруженные вами библиотеки мгновенного клиента Oracle не нравятся. Убедитесь, что вы загрузили 64-битный мгновенный клиент Linux и извлекли его в свое приложение в каталог oracle/.   -  person Daniel Mikusa    schedule 22.07.2020
comment
но это @DanielMikusa, я загружаю его отсюда, почтовый индекс: ссылка, и я извлекаю ее в каталог, я использую ОС Windows, но есть ли другие возможности?   -  person Beavis Luckyano    schedule 23.07.2020
comment
Хорошо, что находится в вашем .profile файле? Похоже, что если LD_LIBRARY_PATH не установлен правильно, у вас может возникнуть эта проблема. Также кажется, что ему нужен libaio.so, но он должен быть доступен из коробки.   -  person Daniel Mikusa    schedule 23.07.2020
comment
@DanielMikusa, поэтому я обновил свой ответ своим .profile, и да, файл «libclntsh.so» существует, но я не нашел ни одного файла с именем «libaio.so».   -  person Beavis Luckyano    schedule 24.07.2020
comment
@DanielMikusa, я сделал это, спасибо, Дэниел, оказывается, я не добавлял экспорт в свой файл. Есть ли способ вручную установить pip в основной? потому что у меня есть библиотека scikit-surprise, для которой сначала нужно установить numpy, прежде чем ее можно будет установить, и включение ее в требования.txt не сработало   -  person Beavis Luckyano    schedule 24.07.2020
comment
Нет, не во время постановки. Сборочный пакет Python установит все, что находится в вашем файле requirements.txt. Я не уверен, почему это не удается без дополнительной информации, это звучит как другая проблема/вопрос.   -  person Daniel Mikusa    schedule 25.07.2020


Ответы (1)


  1. Используйте zip-установщик Oracle Instant Client, а не менеджер пакетов.
  2. Извлеките файлы в подпапку вашего приложения, например oracle/.
  3. Установите cx-Oracle как обычно с pip.
  4. Сгенерируйте requirements.txt.
  5. Добавьте файл с точным именем .profile в корень вашего приложения, в нем введите export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/vcap/app/oracle/lib (где /home/vcap/app — это путь к файлам вашего приложения, а oracle/lib — это путь к каталогу lib под папкой, в которую вы распаковали файлы на шаге № 2. ).
  6. Затем нажмите ваше приложение.

Файл .profile запустится до того, как запустится ваше фактическое приложение, и он изменит путь поиска библиотек, чтобы клиентские библиотеки Oracle можно было найти.

Если вы получаете сообщение об ошибке:

cx_Oracle.DatabaseError: DPI-1047: не удается найти 64-разрядную клиентскую библиотеку Oracle: /home/vcap/app/oracle/instantclient/libclntsh.so: слишком короткий файл

Дважды проверьте свой скрипт .profile и убедитесь, что у вас есть правильная настройка LD_LIBRARY_PATH.

person Daniel Mikusa    schedule 25.07.2020