资讯专栏INFORMATION COLUMN

Debian下无root权限使用Python访问Oracle

Mr_houzi / 2687人阅读

摘要:下无权限使用访问这篇文章的起因是,在公司的服务器上没有权限,但是需要使用访问,而不管是使用安装组件还是安装的,都需要相应权限。本文即解决该问题。下载之后,进入某个有权限的目录,假如是用户的根目录。如果可以的话,说明以及可以使用了。

Debian 下无 root 权限使用 Python 访问 Oracle

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

使用 virtualenv

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

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

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

关于 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 里正常 import cx_Oracle 了。如果可以的话,说明以及可以使用了。

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

Enjoy your work ~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/35068.html

相关文章

  • Debian下无root权限使用Python访问Oracle

    摘要:下无权限使用访问这篇文章的起因是,在公司的服务器上没有权限,但是需要使用访问,而不管是使用安装组件还是安装的,都需要相应权限。本文即解决该问题。下载之后,进入某个有权限的目录,假如是用户的根目录。如果可以的话,说明以及可以使用了。 Debian 下无 root 权限使用 Python 访问 Oracle 这篇文章的起因是,在公司的服务器上没有root权限,但是需要使用 Python 访...

    shenhualong 评论0 收藏0
  • Debian下无root权限使用Python访问Oracle

    摘要:下无权限使用访问这篇文章的起因是,在公司的服务器上没有权限,但是需要使用访问,而不管是使用安装组件还是安装的,都需要相应权限。本文即解决该问题。下载之后,进入某个有权限的目录,假如是用户的根目录。如果可以的话,说明以及可以使用了。 Debian 下无 root 权限使用 Python 访问 Oracle 这篇文章的起因是,在公司的服务器上没有root权限,但是需要使用 Python 访...

    developerworks 评论0 收藏0
  • Ubuntu踩过的坑

    摘要:前言初学走了好多坑,记录于此未写作先甩锅因为是初学很多技术和理解不一定准确到位,如有人参考本文知识,有偏差请见谅环境简单介绍是系统内核下众多分支之一,除此之外还有等,我的理解是属于再基础上的次开发的优势在于有基金会持续维护更新,而且解决了系 前言:初学Linux走了好多坑,记录于此 未写作先甩锅:因为是初学很多技术和理解不一定准确到位,如有人参考本文知识,有偏差请见谅 环境:ubunt...

    qc1iu 评论0 收藏0
  • Ubuntu踩过的坑

    摘要:前言初学走了好多坑,记录于此未写作先甩锅因为是初学很多技术和理解不一定准确到位,如有人参考本文知识,有偏差请见谅环境简单介绍是系统内核下众多分支之一,除此之外还有等,我的理解是属于再基础上的次开发的优势在于有基金会持续维护更新,而且解决了系 前言:初学Linux走了好多坑,记录于此 未写作先甩锅:因为是初学很多技术和理解不一定准确到位,如有人参考本文知识,有偏差请见谅 环境:ubunt...

    Alliot 评论0 收藏0
  • 老板让我十分钟上手nx-admin

    摘要:我就是一游客系统获取我的信息拿到权限值动态加载路由通行不是。。我是权限汪等等我看看作者有没有把你降级没有好了。。你还是权限汪请进有滚吧你已经不是权限汪了作者已经把你写成战斗力只有的渣渣了没有没有还敢闯这里滚去关口没错,就这么简单。 大体流程 参考资料: nx-admin项目地址 首先这里就不讲解vue和vuex之类的基础东西了 有兴趣的可以去官方文档了解。这里根据流程走向大概说说 路由...

    DevYK 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<