我正在运行python脚本将一些数据加载到db2数据库中。然而,我想出了以下模块加载错误:
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模块目录:
[dbadmin@bldr2:/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条目那样。他们应该在日志文件中生成相同的内容,不应该吗?
答案 0 :(得分:1)
尝试强制加载db2配置文件。假设实例位于db2inst1
18 * * * * . ~db2inst1/sqllib/db2profile ; myscript.py [parameter_list] >cron_nag.log 2>&1
问题是cron没有加载.profile,db2profile是从.profile加载的。
此外,如果您创建另一个shell,则该新shell无法保留db2profile或连接。