Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Matlab通过shell脚本调用python脚本';s system()会导致奇怪的错误_Python_Matlab_Shell - Fatal编程技术网

通过Matlab通过shell脚本调用python脚本';s system()会导致奇怪的错误

通过Matlab通过shell脚本调用python脚本';s system()会导致奇怪的错误,python,matlab,shell,Python,Matlab,Shell,因此,我将Matlab“调用”到外部python库。Matlab端使用dlmwrite()将一个双精度矩阵写入一个文件,通过连接到以下音调建立一个命令字符串(仅一行): #/bin/tcsh python myscript.py -option1 long_file_path1 long_file_path2 long_file_path3<br> #/bin/tcsh python myscript.py-option1 long_file_path1 long_file_pat

因此,我将Matlab“调用”到外部python库。Matlab端使用dlmwrite()将一个双精度矩阵写入一个文件,通过连接到以下音调建立一个命令字符串(仅一行):

#/bin/tcsh
python myscript.py -option1 long_file_path1 long_file_path2 long_file_path3<br>
#/bin/tcsh
python myscript.py-option1 long_file_path1 long_file_path2 long_file_path3
这个长而可怕的命令被编写成一个shell脚本,让它命名为caller.sh,然后Matlab使用system()命令成功地调用caller.sh上的chmod 755

但是,当我尝试在shell脚本(即system(['sh caller.sh'])上实际运行system()命令时,它突然崩溃:

Traceback (most recent call last):
  File "/homes/sb1006/PhD_Year_1/code//my_libs/LSTM/python/monohiddenlayer_regression_LSTM.py", line 1, in <module>
    import pybrain
  File "/homes/sb1006/PhD_Year_1/code/my_libs/LSTM/python/pybrain/__init__.py", line 1, in <module>
    from structure.__init__ import *
  File "/homes/sb1006/PhD_Year_1/code/my_libs/LSTM/python/pybrain/structure/__init__.py", line 1, in <module>
    from connections.__init__ import *
  File "/homes/sb1006/PhD_Year_1/code/my_libs/LSTM/python/pybrain/structure/connections/__init__.py", line 1, in <module>
    from full import FullConnection
  File "/homes/sb1006/PhD_Year_1/code/my_libs/LSTM/python/pybrain/structure/connections/full.py", line 3, in <module>
    from scipy import reshape, dot, outer
  File "/usr/lib/python2.7/dist-packages/scipy/__init__.py", line 78, in <module>
    from numpy import show_config as show_numpy_config
  File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 137, in <module>
    import add_newdocs
  File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 9, in <module>
    from numpy.lib import add_newdoc
  File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 13, in <module>
    from polynomial import *
  File "/usr/lib/python2.7/dist-packages/numpy/lib/polynomial.py", line 17, in <module>
    from numpy.linalg import eigvals, lstsq
  File "/usr/lib/python2.7/dist-packages/numpy/linalg/__init__.py", line 48, in <module>
    from linalg import *
  File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 23, in <module>
    from numpy.linalg import lapack_lite
ImportError: /usr/lib/matlab/R2012a/sys/os/glnxa64/libgfortran.so.3: version 'GFORTRAN_1.4' not found (required by /usr/lib/liblapack.so.3gf)
回溯(最近一次呼叫最后一次):
文件“/homes/sb1006/PhD_Year_1/code//my_libs/LSTM/python/monohidenlayer_regression_LSTM.py”,第1行,在
进口猪脑
文件“/homes/sb1006/PhD_Year_1/code/my_libs/LSTM/python/pybrain/___init__.py”,第1行,在
从结构。初始化导入*
文件“/homes/sb1006/PhD_Year_1/code/my_libs/LSTM/python/pybrain/structure/_init_uuuuuu.py”,第1行,在
来自连接。初始化导入*
文件“/homes/sb1006/PhD_Year_1/code/my_libs/LSTM/python/pybrain/structure/connections/_init__.py”,第1行,在
从完全导入到完全连接
文件“/homes/sb1006/PhD_Year_1/code/my_libs/LSTM/python/pybrain/structure/connections/full.py”,第3行,在
从scipy导入重塑、圆点、外部
文件“/usr/lib/python2.7/dist-packages/scipy/_-init__.py”,第78行,在
从numpy导入show\u config作为show\u numpy\u config
文件“/usr/lib/python2.7/dist-packages/numpy/_-init__.py”,第137行,在
导入添加新文档
文件“/usr/lib/python2.7/dist packages/numpy/add_newdocs.py”,第9行,在
从numpy.lib导入添加新文档
文件“/usr/lib/python2.7/dist packages/numpy/lib/_init__.py”,第13行,在
从多项式导入*
文件“/usr/lib/python2.7/dist packages/numpy/lib/polynomy.py”,第17行,在
从numpy.linalg进口eigvals,lstsq
文件“/usr/lib/python2.7/dist-packages/numpy/linalg/_-init__.py”,第48行,在
从linalg进口*
文件“/usr/lib/python2.7/dist packages/numpy/linalg/linalg.py”,第23行,在
从numpy.linalg导入lapack_lite
导入错误:/usr/lib/matlab/R2012a/sys/os/glnxa64/libgfortran.so.3:找不到版本“GFORTRAN_1.4”(由/usr/lib/liblapack.so.3gf所需)
当我从一个单独的shell运行caller.sh时(如中所示,我设置了一个断点,并将system()中的命令复制到终端中),一切运行正常。当我将caller.sh的内部直接复制到终端中时,它运行正常


但是由于某种原因,Matlab系统(['sh caller.sh'])是导致它以最奇怪的方式爆炸,这表明我在自己的python脚本中调用的python库缺少Matlab运行时的一些线性代数库?!尽管事实证明它独立于Matlab运行,这是显而易见的。我很困惑。

我想Matlab是通过设置
LD\u library\u路径的包装器运行的/usr/lib/Matlab/R2012a/sys/os/glnxa64/
加载它的捆绑库了。当然,当它们从Matlab运行时,这会破坏正确的应用程序,因为它们与那些库的不兼容版本相链接。我只能想在脚本中取消
LD_LIBRARY_PATH
e最干净的解决方案。

请将错误粘贴到此处,然后使用编辑器工具栏中的
{}
按钮缩进文本4个空格。呃,正如您所述,我将整个错误复制到{}块中,但它没有保留选项卡…下次,选择整个回溯,并使用
{}
将其缩进4个空格。我为您修复了它。会议提交截止日期为6天,它就可以了:)我没有想到Matlab会在自己和外壳之间设置自己的环境。我绝对不认为Matlab和Python会在一些常见的环境变量名上发生冲突。谢谢大家!@user1843053事实上,它与Python无关,任何其他与libgfortran.so.3或任何其他绑定库链接的程序都可能在该环境中中断。因此,我明白了-如果链接器能够匹配环境变量(这些变量具有一些连接到“LD_LIBRARY_PATH”的标识前缀),那就太好了,而不是依赖于在所有可执行文件之间共享的单一变量。不