我正在運行一個python腳本來將一些數據加載到db2數據庫中。然而,我想出了以下模塊加載錯誤:crontab和手動運行的不同結果
Traceback (most recent call last):
File "myscript.py", line 22, in ?
import DB2
File "/opt/freeware/lib/python2.3/site-packages/DB2.py", line 12, in ?
import _db2
ImportError: Could not load module /opt/freeware/lib/python2.3/site-packages/_db2.so.
Dependent module libdb2.a(shr.o) could not be loaded.
Could not load module libdb2.a(shr.o).
System error: No such file or directory
Could not load module /opt/freeware/lib/python2.3/site-packages/_db2.so.
Dependent module /opt/freeware/lib/python2.3/site-packages/_db2.so could not be loaded.
這裏是我的Python模塊目錄:
[[email protected]:/opt/freeware/lib/python2.3/site-packages]# ls -l
total 800
-rw-r--r-- 1 root system 8142 May 30 2008 DB2.py
-rw-r--r-- 1 root system 17133 May 30 2008 DB2.pyc
-rw-r--r-- 1 root system 119 Aug 09 2005 README
-rwxr-xr-x 1 root system 66550 May 30 2008 _db2.so
drwxr-xr-x 2 root system 256 Mar 31 2009 logging
-rw-r--r-- 1 root system 307200 Jan 13 15:19 python-modules.tar
出了什麼問題嗎?那麼修復會是什麼?
更新: 我手動重新運行該命令,並且它成功沒有吐痰錯誤。然而,這項工作原本是crontab條目,如:
18 * * * * myscript.py [parameter_list] >cron_nag.log 2>&1
我在上面貼出來的日誌是在這個「cron_nag.log」。但是當我手動重新運行命令時,錯誤被清除,不再抱怨模塊加載,並且一切都很順利。
爲什麼crontab條目和手動運行之間的區別?我使用相同的用戶dbadmin
來手動運行命令,如crontab項所做的那樣。他們應該在日誌文件中產生相同的內容,不是嗎?
您是否安裝了IBM Data Server Client(或其他適當的DB2客戶端軟件包)? – mustaccio
@mustaccio:是的,我有一個命令行工具用作db2客戶端。只需鍵入'db2',我就可以連接到db2數據庫。所以它看起來像一個python問題,而不是一個db2問題。 –
Python 2.3是一個非常*舊的版本。任何機會,你可以安裝一個新的,如2.7? –