python - 通过 shell 脚本调用 python 脚本时出现 ImportError

标签 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"
    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

我检查了 echo $PYTHONPATHecho $PATHecho $LD_LIBRARY_PATHwhich python 的结果code> 无论是在 bash 脚本中还是在命令行中调用,都返回相同的结果。

我不知道发生了什么!

最佳答案

我遇到了类似的问题。事实证明,在我的 bash 脚本中,我使用与命令行不同版本的 Python 运行 Python 脚本(我的环境是在 Python 2.7 上使用 virtualenv 设置的,但我是使用 Python3 从 bash 脚本调用脚本).

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

关于python - 通过 shell 脚本调用 python 脚本时出现 ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18408783/

相关文章:

c++ - Python PyGILState_{Ensure/Release} 在从 Python 代码返回到 C++ 时导致段错误

python - 为什么冒号会破坏novaclient的glance.find_image?

linux - $!不适用于最后一个 fork 进程的 PID

json - 如何使用命令行计算 JSON 对象中的项目?

linux - bash 中的 PHP preg_replace,具体情况

python - 计算数据帧 A 的每一行在另一个数据帧的许多元素的每一行中出现的次数

Python 删除包含大量缺失值的列

linux - 从压缩文件中快速 grep 多个值

shell - 让 vim 将当前文件路径传递给我的 shell

linux - 如何在 Linux 中将天数转换为秒数