Debian下無root許可權使用Python訪問Oracle

來源:互聯網
上載者:User

標籤:建立   bashrc   block   env   cli   操作   公司   install   隔離   

這篇文章的起因是,在公司的伺服器上沒有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_2export LD_LIBRATY_PATH=$ORACLE_HOME:$LD_LIBRATY_PATHexport 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 ~

Debian下無root許可權使用Python訪問Oracle

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.