crontab 中 python(cx_Oracle)指令碼執行時需要使用者環境變數,怎麼辦??

來源:互聯網
上載者:User

標籤:

 import cx_Oracle

Traceback (most recent call last):

File "", line 1, in ?

ImportError: libclntsh.so.10.1: cannot open shared object file: No such file or directory

看以下文章解決的,唯一比他幸運的是看了他的貼子,不用花半天~:)~~~~~~~~~~~~crontab 中 python 指令碼執行失敗的解決方案

寫伺服器程式的免不了要經常和 crontab 打交道,定時執行一些指令碼什麼的。大部分情況下都是 bash 的一些 shell 指令碼,但 shell 我不是很熟悉,於是在很多情況下都直接寫 Python 指令碼來搞定它。今天寫了一個操作 PostgreSQL 資料庫的 Python 指令碼,放到 crontab 中定時執行的時候,時間到了卻沒有任何反映。但是如果在命令列下直接執行的話,沒有任何問題。

首先看看 crontab 的日誌(/var/log/cron),日誌中顯示指令碼定時執行了。那麼一定是在 crontab 運行該指令碼的時候報錯。直接在 Python 指令碼中從第一行開始寫一個大大的 try 模組,顯示一下 Exception 的內容。果然,抓到了…… 錯誤記錄檔顯示顯示 Python 找不到 libpq.so.5 這個 PostgreSQL 的庫。

原來 crontab 的運行環境和我們用 root 登入進去的環境都是不同的,需要在運行 Python 指令碼前重新設定一下啟動並執行環境變數如 LD_LIBRARY_PATH。這下比較好辦了,直接寫一個 shell 指令碼,設定一下環境變數,再調用 Python 吧。 libpq.so.5 這個庫我是裝在 /usr/local/pgsql/lib 中。最後的指令碼如下:

搞定,crontab 又跑得歡快起來了。

折騰了一個上午,寫下來備忘。

crontab 中 python(cx_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.