我在简单的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)
总是引发错误:global name 'simple_sim' is not defined
,虽然应该定义它不应该吗?
答案 0 :(得分:2)
确保simple_sim
在您的ipython引擎的路径中,而不仅仅是您的ipython shell。
即。如果在simple_sim.py
中~/mydir/
,您需要在ipcluster start --n=4
中运行~/mydir/
或在~/mydir
中$PYTHON_PATH
运行ipcluster
}。
答案 1 :(得分:1)
不是100%肯定,但可能是simple_sim不在网站包中或与dview在同一文件夹中。换句话说,dview无法找到你的simple_sim模块,因此它会产生错误。但是,如果不是这种情况,我不确定是什么产生了这个错误。