首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JupyterHub Oracle InstantClient和cx_Oracle安装

JupyterHub Oracle InstantClient和cx_Oracle安装
EN

Stack Overflow用户
提问于 2021-03-11 15:28:05
回答 2查看 563关注 0票数 0

我使用Docker容器安装了JupyterHub。

  1. I创建了一个新的Anaconda环境" cx_oracle_env ",并在终端中安装了包cx_Oracle :使用Python3.7在静音模式下创建一个名为" cx_oracle_env“的新Anaconda环境,conda create -n cx_oracle_env python=3.7 -y # >>>>返回无警告/错误# >>>>激活Anaconda环境"cx_oracle_env”conda activate cx_oracle_env#>>>>不返回警告/错误# Mamba是C++中conda包管理器的重新实现。#-使用多线程#- libsolv并行下载存储库数据和包文件以更快地解决依赖,这是Red、Fedora和OpenSUSE #的# RPM包管理器中使用的最先进的库-- mamba的核心部分在C++中实现了最大的效率#同时,mamba使用了与conda相同的命令行解析器、包安装和# deinstallation代码以及事务验证例程,以尽可能保持#兼容。# conda安装mamba -n base -c conda锻造-y # >>>>在当前活动的Anaconda Environment -y # >>>>中不返回警告/错误#-y# >>>>返回无警告/错误#安装cx_Oracle python -m pip安装cx_Oracle升级# >>>>返回没有警告/错误#绑定ipykernel " cx_oracle_env“到Anaconda环境"cx_oracle_env”python环境--用户--名称cx_oracle_env--显示-name=“cx_oracle_env”

我将甲骨文instantclient-basic-linux.x64-21.1.0.0.0.zip从 InstantClient https://www.oracle.com/uk/database/technologies/instant-client/linux-x86-64-downloads.html下载到本地计算机,并将压缩文件上传到JupyterHub工作目录.

  1. I通过在发射面板的笔记本中选择"cx_oracle_env“打开了一本新的木星笔记本。

在朱庇特笔记本中的

  1. 中,我使用以下命令解压缩了文件实例化客户机-Basic-linux.x64-21.1.0.0.0.zip:

从shutil导入unpack_archive #解压缩ZIP-文件到工作目录(/home/jovyan/实例化客户端21_1/)unpack_archive '') >>>>不返回警告/错误

  1. 检查是否存在路径:

从os导入路径path.exists("/home/jovyan/instantclient_21_1") # >>>>导入os.path返回真实的

  1. Set LD_LIBRARY_PATH:

导入os os.environ"LD_LIBRARY_PATH“= "/home/jovyan/instantclient_21_1”!echo $LD_LIBRARY_PATH # >>>>返回$LD_LIBRARY_PATH

  1. Set ORACLE_HOME:

/home/jovyan/instantclient_21_1 os.environ"ORACLE_HOME“=”/home/jovyan/实例化客户端21_1“!回声$ORACLE_HOME # >>>>返回$ORACLE_HOME

  1. 安装libaio:

!mamba安装libaio -y # >>>>不返回警告/错误

  1. Import cx_Oracle:

导入cx_Oracle # >>>>不返回警告/错误

在调用

  1. 之后,我得到以下错误:

cx_Oracle.init_oracle_client(lib_dir=r"/home/jovyan/instantclient_21_1")

我遗漏了什么?

PS:不幸的是,我在JupyterHub终端没有sudo权限.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-25 11:23:25

我最终通过从JupyterHub定制Dockerfile来创建一个新的https://github.com/jupyter/docker-stacks/blob/master/minimal-notebook/Dockerfile环境来解决这个问题,并将其嵌入JupyterHub中作为新的“最小Oracle环境”。

自定义Dockerfile包含以下内容(我只添加了"cx_Oracle安装开始/结束“部分):

代码语言:javascript
复制
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
ARG BASE_CONTAINER=jupyter/base-notebook
FROM $BASE_CONTAINER

LABEL maintainer="Jupyter Project <jupyter@googlegroups.com>"

USER root

# Install all OS dependencies for fully functional notebook server
RUN apt-get update && apt-get install -yq --no-install-recommends \
    build-essential \
    vim-tiny \
    git \
    inkscape \
    libsm6 \
    libxext-dev \
    libxrender1 \
    lmodern \
    netcat \
    # ---- nbconvert dependencies ----
    texlive-xetex \
    texlive-fonts-recommended \
    texlive-plain-generic \
    # ----
    tzdata \
    unzip \
    nano-tiny \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# cx_Oracle installation begin
WORKDIR /opt/oracle
RUN apt-get update && apt-get install -y libaio1 wget
RUN wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \
    unzip instantclient-basiclite-linuxx64.zip && rm -f instantclient-basiclite-linuxx64.zip && \
    cd /opt/oracle/instantclient* && rm -f *jdbc* *occi* *mysql* *README *jar uidrvci genezi adrci && \
    echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig
RUN python -m pip install cx_Oracle
WORKDIR $HOME
# cx_Oracle installation end

# Create alternative for nano -> nano-tiny
RUN update-alternatives --install /usr/bin/nano nano /bin/nano-tiny 10

# Switch back to jovyan to avoid accidental container runs as root
USER $NB_UID

在本地构建自定义Dockerfile并将其作为“最小Oracle环境”嵌入到Kubernetes集群中之后,我在新创建的JupyterHub环境中启动了一个新的朱庇特笔记本,并对ORACLE进行了如下测试:

票数 0
EN

Stack Overflow用户

发布于 2021-03-11 15:45:45

不幸的是,必须在启动进程之前设置环境变量LD_LIBRARY_PATH,因此在您的Python中更改它将无法工作。

此外,由于当前构建即时客户端的方式受到限制,如果不事先在进程之外设置cx_Oracle.init_oracle_client(),则无法在Linux上使用LD_LIBRARY_PATH。希望这个限制很快就能被取消,但在此期间,这是你必须做的。您还可以使用ld.so.conf配置来使整个计算机的安装工作,在这种情况下,不再需要设置LD_LIBRARY_PATH

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66585528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档