0

我在一个简单的 Python 程序中遇到了命名空间的问题:谁能指出我正确的方向

import numpy as np
import simple_sim
from IPython.parallel import Client

prescale_steps = np.linspace(0.5, 1.5, 101)
val = []

c = Client()
dview = c[:]
dview.execute('import simple_sim')
dview.execute('from numpy import *')
dview['prescale_steps'] = prescale_steps
dview['val'] = val

detuning_steps = np.linspace(-11,11,101)


def fid(det):
    for p in prescale_steps:
        tlist, ret =    simple_sim.simple_simulation(pulse_file='/home/andreas/Dropbox/puls25p8gn15map.mat', pulse_length=0.5, gamma=0, detuning=det, prescale=p)
        val.append(np.array([d,p,ret[-1]]))
    return val



lview = c.load_balanced_view()
res = lview.map(fid, detuning_steps)
a = res.get()
a = np.asarray(a)

总是引发 Error: global name 'simple_sim' is not defined,虽然它应该被定义,不是吗?

4

2 回答 2

2

确保它simple_sim在你的 ipython 引擎的路径中,而不仅仅是你的 ipython shell。

即如果simple_sim.py~/mydir/,你需要ipcluster start --n=4在你的for shell中运行~/mydir/或运行。~/mydir$PYTHON_PATHipcluster

于 2013-09-13T20:40:26.047 回答
1

不是 100% 确定,但可能是 simple_sim 不在站点包中或与 dview 位于同一文件夹中。换句话说,dview 找不到您的 simple_sim 模块,因此会产生错误。但是,如果情况并非如此,我不确定是什么产生了该错误。

于 2013-09-13T20:31:17.993 回答