shell中调用python脚本_通过Shell脚本调用python脚本时出现ImportError

我已经减少了我要解决的问题.这是我的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

import numpy

File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/__init__.py", line 148, in

import add_newdocs

File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/add_newdocs.py", line 9, in

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

from polynomial import *

File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/lib/polynomial.py", line 17, in

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

from linalg import *

File "/home/alex/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 23, in

from numpy.linalg import lapack_lite

ImportError: libmkl_gf_lp64.so: cannot open shared object file: No such file or directory

我已经检查了echo $PYTHONPATH,echo $PATH,echo $LD_LIBRARY_PATH的结果,以及无论在bash脚本中还是在命令行中调用的python,它们都返回相同的结果.

我不知道发生了什么!

解决方法:

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

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

标签:bash,shell,python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值