2017-03-05 96 views
0

我有一个虚拟环境my_env,我在其中安装了Anaconda。当我键入导入错误:Anaconda numpy(numpy和Anaconda已经安装,virtualenv)

which python 

我得到:

/user/pkgs/anaconda2/envs/my_env/bin/python 

我有进口没有错误numpy的位置:

(my_env) [email protected]:~/my_dir$ python 
Python 2.7.12 |Continuum Analytics, Inc.| (default, Jul 2 2016, 17:42:40) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
Anaconda is brought to you by Continuum Analytics. 
Please check out: http://continuum.io/thanks and https://anaconda.org 
>>> import numpy as np 
>>> 

但是,当我说 '进口numpy的是NP' 在Python程序和从shell脚本运行,我得到:

(my_env) [email protected]:~/mydir$ ./program.sh 
Traceback (most recent call last): 
    File "../python_program.py", line 3, in <module> 
    import numpy as np 
ImportError: No module named numpy 

我该如何解决这个问题?

编辑:我被问到什么是在program.sh。简短的答案是我在一个循环中运行不同的参数。长的答案是:

#/bin/bash 

i=0 
while read a1 b1 c1 d1 e1 f1 g1 h1 i1 
    do 
    i=$(($i+1)) 
    mkdir RUN_EXP$i 
    cp $a1 RUN_EXP$i 
    cd RUN_EXP$i 
    ../python_program.py --filename $a1 --reps $b1 --pop $c1 --susc $d1 --exp_trans $e1 --inf_period $f1\ $g1 --eps $h1\ $i1 
    cd .. 
    done < readparas.txt 

文件readparas.txt具有包含文件名,代表,流行,SUSC,exp_trans,inf_period线,和每股收益如下:

run_1.txt 50 162 0.30 0.1 5 9 0.1 0.25 
run_1.txt 50 162 0.30 0.3 5 9 0.1 0.25 
... 
+0

是什么在'program.sh'中? – DyZ

+0

@DYZ请参阅上面的修改。 – StatsSorceress

回答

2

你的shell脚本不关心有一个virtualenv活动(它开始于一个干净的环境)。

相反的../python_program.py你需要有完整的可执行文件的路径

export PYTHON_ENV=/user/pkgs/anaconda2/envs/my_env 

$PYTHON_ENV/bin/python ../python_program.py --filename $a1 ... 

或者你可以把这段的python_program.py

#!/usr/bin/env python 

顶部参考:The importance of env (and how it works with virtualenv)

+0

为什么完整的可执行文件路径是必需的?这不是我之前跑过的类似计划。 – StatsSorceress

+0

因为您正在使用'virtualenv',其中安装了'numpy'。您的其他程序正在使用您的系统Python并拥有所有可用的模块。 –

+0

除了virtualenv之外还发生问题。 – StatsSorceress