【发布时间】:2012-02-09 09:38:11
【问题描述】:
我正在尝试在 python 中包含 Matlab 共享库,如果首先我将以下变量添加到环境变量中,那么 python 代码可以正常工作:
$ export LD_LIBRARY_PATH=/usr/local/MATLAB/R2010b/runtime/glnxa64:/usr/local/MATLAB/R2010b/sys/os/glnxa64:/usr/local/MATLAB/R2010b/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:/usr/local/MATLAB/R2010b/sys/java/jre/glnxa64/jre/lib/amd64/server:/usr/local/MATLAB/R2010b/sys/java/jre/glnxa64/jre/lib/amd64
$ python run.py
run.py的内容
from ctypes import *
if __name__ == '__main__':
dll = CDLL("/home/robu/Documents/tmo_compile/libmatrix/distrib/libmatrix.so")
我尝试在 pythyon 中添加这个环境变量
from ctypes import *
import os
LD_LIBRARY_PATH = "/usr/local/MATLAB/R2010b/runtime/glnxa64:/usr/local/MATLAB/R2010b/sys/os/glnxa64:/usr/local/MATLAB/R2010b/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:/usr/local/MATLAB/R2010b/sys/java/jre/glnxa64/jre/lib/amd64/server:/usr/local/MATLAB/R2010b/sys/java/jre/glnxa64/jre/lib/amd64"
XAPPLRESDIR = "/usr/local/MATLAB/R2010b/X11/app-defaults"
if __name__ == '__main__':
os.environ['LD_LIBRARY_PATH'] = LD_LIBRARY_PATH
os.environ['XAPPLRESDIR'] = XAPPLRESDIR
print os.environ['LD_LIBRARY_PATH']
dll = CDLL("/home/robu/Documents/tmo_compile/libmatrix/distrib/libmatrix.so")
但在这种情况下,我遇到了错误
OSError: libmwmclmcrrt.so: cannot open shared object file: No such file or directory
我在 python 中做错了什么?
更新
我尝试了以下方法:
if(not os.environ.has_key('LD_LIBRARY_PATH')):
os.environ['LD_LIBRARY_PATH'] = LD_LIBRARY_PATH
os.environ['XAPPLRESDIR'] = XAPPLRESDIR
os.execve('run.py', (), os.environ)
但我收到了OSError: [Errno 2] No such file or directory
【问题讨论】:
标签: python shared-libraries environment-variables ctypes