zoukankan      html  css  js  c++  java
  • Debian下无root权限使用Python访问Oracle

    这篇文章的起因是,在公司的服务器上没有root权限,但是需要使用 Python 访问 Oracle,而不管是使用 pip 安装组件还是安装 Oracle 的 client,都需要相应权限。本文即解决该问题。

    使用 virtualenv

    使用系统自带 Python 和 pip 安装组件时,默认会安装到系统目录下,需要 root 权限才能执行写操作。

    不管是从资源隔离的角度,还是从绕过 root 的角度,你都需要一套顺手的 Python 虚拟环境工具:virtualenv

    去求运维哥哥帮忙安装 virtualenv 吧。顺便说一句,pip 和 virtualenv 在 Debian 下都可以直接使用 apt-get 安装,对应的包分别是 python-pip 和 virtualevn。如果服务器上没有的话,大胆地提供单吧。

    关于 virtualenv,本文不再赘述,如有疑问,请移步我的另一篇文章《聊聊 virtualenv 和 virtualenvwrapper 实践》。

    有了 virtualenv,就可以建立自己的 Python 虚拟环境了,在虚拟环境中不需要任何 root 权限。之后的工作都是在虚拟中进行的。

    安装 cx_Oracle

    Python 中访问 Oracle 需要使用 cx_Oracle,此处直接使用 pip 安装即可。

    pip install cx_Oracle --pre

    我碰到了一个安装过程中提示找不到 Python.h 文件的,这说明系统中缺少 python-dev 包,是用 apt-get 装的,同样请运维帮装上就行了。

    安装 instantclient

    只是安装完 cx_Oracle,在 import 的时候会报找不到库。还要再安装一下 Oracle 官方的 instantclient。下载地址在这里,下载Instant Client Package - Basic 即可。

    下载之后,进入某个有权限的目录,假如是用户的根目录 ~。将下载到的 zip 包解压,例如到 ~/oracle/instantclient_12_2/ 目录下。之后,需要添加环境变量让系统能够找到这些库。在终端的 rc 文件里,例如 ~/.bashrc 末尾,添加环境变量如下。

    export ORACLE_HOME=$HOME/oracle/instantclient_12_2
    export LD_LIBRATY_PATH=$ORACLE_HOME:$LD_LIBRATY_PATH
    export PATH=$ORACLE_HOME:$PATH

    此时,还需要额外做一件事情,就是建立 libclntsh.so 的软链接。

    ln -s libclntsh.so.12.1 libclntsh.so

    做这件事情的原因是,cx_Oracle 需要使用库文件 libclntsh.so,但是在解压之后的 instantclient 中只包含带有版本号的该库文件,因此我们需要人工做一个软链接,以供识别。

    接下来,让刚修改了环境变量的 rc 文件生效即可。

    source ~/.bashrc

    需要注意的是,在这次 source 之后,之前进入的虚拟环境将被退出。如果后面还需要继续八戒影院在虚拟环境里工作的话,需要再进入一次

    尾声

    现在,理论上应该可以在 Python 里www.rcsx.org正常 import cx_Oracle 了。如果可以的话,说明以及可以使用了。

    如果不行的话,需要补充一些报错中提到的包。我在测试过程中发现系统中缺少 libaio1 和 libaio-dev 两个包。一并请运维装上就好了。

    Enjoy your work ~

  • 相关阅读:
    ASP.NET Web API 2 之文件下载
    Windows 查看某个端口号是否被占用
    C# 数据类型之 String(字符串)
    数据表对应关系(一对一、一对多、多对多)
    嫁给程序员的好处,你get到了吗?
    ASP.NET Web API 2 之 HttpRequestMessage 对象
    C# 使用 log4net 记录日志
    Chrome 浏览器快捷键
    C# 获取程序运行时路径
    SpringBoot整合Pagehelper分页插件
  • 原文地址:https://www.cnblogs.com/tianshifu/p/7334944.html
Copyright © 2011-2022 走看看