Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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
当通过shell脚本调用python脚本时发生ImportError_Python_Bash_Shell - Fatal编程技术网

当通过shell脚本调用python脚本时发生ImportError

当通过shell脚本调用python脚本时发生ImportError,python,bash,shell,Python,Bash,Shell,我已经把我要解决的问题简化为这个问题。下面是我的python脚本tmp.py的内容: import numpy print "Imported numpy!" 如果我直接在命令行调用python脚本 $ python tmp.py 它成功导入numpy并打印print语句 下面是我的bash脚本test.sh的内容: #!/bin/bash echo "PYTHONPATH:: $PYTHONPATH" echo "PATH:: $PATH"

我已经把我要解决的问题简化为这个问题。下面是我的python脚本
tmp.py
的内容:

    import numpy
    print "Imported numpy!"
如果我直接在命令行调用python脚本

    $ python tmp.py
它成功导入numpy并打印print语句

下面是我的bash脚本test.sh的内容:

    #!/bin/bash

    echo "PYTHONPATH:: $PYTHONPATH"
    echo "PATH:: $PATH"
    echo "LD_LIBRARY_PATH:: $LD_LIBRARY_PATH"
    pyver=`which python`
    echo "Using python version $pyver"
    python tmp.py
如果我在命令行调用这个脚本

    $ ./test.sh
我得到以下错误:

    Traceback (most recent call last):
      File "tmp.py", line 1, in <module>
        import numpy
      File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/__init__.py", line 148, in <module>
        import add_newdocs
      File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/add_newdocs.py", line 9, in <module>
        from numpy.lib import add_newdoc
      File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/lib/__init__.py", line 13, in <module>
        from polynomial import *
      File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/lib/polynomial.py", line 17, in <module>
        from numpy.linalg import eigvals, lstsq
      File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/linalg/__init__.py", line 48, in <module>
        from linalg import *
      File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 23, in <module>
        from numpy.linalg import lapack_lite
    ImportError: libmkl_gf_lp64.so: cannot open shared object file: No such file or directory
回溯(最近一次呼叫最后一次):
文件“tmp.py”,第1行,在
进口numpy
文件“/home/alex/enthught/Canopy_64bit/User/lib/python2.7/site packages/numpy/__init__uuuuu.py”,第148行,in
导入添加新文档
文件“/home/alex/enthught/Canopy_64bit/User/lib/python2.7/site packages/numpy/add_newdocs.py”,第9行,在
从numpy.lib导入添加新文档
文件“/home/alex/enthunk/Canopy_64bit/User/lib/python2.7/site packages/numpy/lib/__init__;.py”,第13行,在
从多项式导入*
文件“/home/alex/enthund/Canopy_64bit/User/lib/python2.7/site packages/numpy/lib/polymonery.py”,第17行,在
从numpy.linalg进口eigvals,lstsq
文件“/home/alex/enthught/Canopy_64bit/User/lib/python2.7/site packages/numpy/linalg/_init__uuuuu.py”,第48行,in
从linalg进口*
文件“/home/alex/enthund/Canopy_64bit/User/lib/python2.7/site packages/numpy/linalg/linalg.py”,第23行,在
从numpy.linalg导入lapack_lite
ImportError:libmkl_gf_lp64.so:无法打开共享对象文件:没有此类文件或目录
我已经检查了
echo$PYTHONPATH
echo$PATH
echo$LD\u LIBRARY\u PATH
which python
的结果,无论是在bash脚本中调用还是在命令行中调用,都返回相同的结果


我不知道发生了什么事

我也有类似的问题。事实证明,在我的bash脚本中,我使用与命令行不同的Python版本运行Python脚本(我的env是在Python2.7上使用virtualenv设置的,但我使用的是bash脚本中的Python3调用脚本)


您的代码片段中没有任何东西表明是这种情况,但值得检查以确保Python版本匹配。

您是否像从命令行测试脚本一样从同一目录运行该脚本?测试了您的方法,它对我使用ubuntu非常有效。如前一条评论所述,tmp.py和test.sh是否在同一目录中?
$ls-Fal/bin/bash的输出是什么?您的命令行实际上是bash还是使用不同的shell?如果使用
$,输出是否不同/test.sh
$source./test.sh
而不是
$./test.sh
?是的,脚本与
tmp.py
在同一目录下运行,是的!bash脚本使用
$source./tesh.sh
为什么?