首先,为了隔离问题,不要从构建informix的同一目录或安装InformixDB的目录调用python或脚本。相反,从应用程序所在的位置调用它。从那里,看看如果您尝试“importinformixdb”会发生什么。如果python抱怨找不到“informixdb”(名称中没有下划线),那么您的python路径就混乱了,您需要修复python路径以包含informixdb的安装位置。在
如果python抱怨它不能导入“\u informixdb”(带下划线),请验证_informixdb.so与位于同一位置informixdb.py以及对该文件的权限是否正确。如果是这样,问题很可能是动态链接器找不到Informix客户机运行时库。在
要检查后者是否存在问题,请运行命令“ldd/path/To”/_informixdb.so“看看输出。应该是这样的:carsten@haese:~$ ldd /usr/local/lib/python2.7/dist-packages/_informixdb.so
linux-gate.so.1 => (0x00f47000)
libifsql.so => /opt/informix/lib/esql/libifsql.so (0x001d9000)
libifasf.so => /opt/informix/lib/libifasf.so (0x00999000)
libifgen.so => /opt/informix/lib/esql/libifgen.so (0x00110000)
libifos.so => /opt/informix/lib/esql/libifos.so (0x0039f000)
libifgls.so => /opt/informix/lib/esql/libifgls.so (0x0061d000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x006c5000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00be8000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00342000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x001b1000)
libcrypt.so.1 => /lib/i386-linux-gnu/libcrypt.so.1 (0x00220000)
/lib/ld-linux.so.2 (0x0016a000)
如果ldd命令指示找不到任何libifXXX库,这就是您的问题,您需要告诉动态链接器Informix库的位置,例如通过适当地设置LD_LIBRARY_PATH环境变量或将其添加到etc/ld.so.conf公司以某种方式运行ldconfig。在