python - python下添加环境变量

标签 python shared-libraries environment-variables ctypes

我正在尝试在 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]没有这样的文件或目录

最佳答案

加载程序首次加载时会读取该环境变量。在 Python 中设置它已经太晚了,因为加载程序是在 Python 可执行文件启动时加载的。您需要使用 os.exec*() 来通过运行新的可执行文件(从而加载新的加载程序)来替换当前进程。

关于python - python下添加环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208368/

相关文章:

python - Pandas DataFrame 字符串引用显示选项

python - 在 python 中使用 numpy.reshape

从 C 调用的 C++ 共享库

android - Android 上共享库的偏移量

java - 为 Eclipse IDE 启动设置环境变量

python - 在 emacs 中启动 ipython 时没有提示

python - 使用 Python 连接到 Google Analytics API

c++ - 使用 libc.so.6 捆绑 C++ 应用程序

environment-variables - Julia:未能将 PyCall 配置为使用不同的版本

java - 如何将环境属性读取到xml中