我正在尝试将一些个人模块导入到我的IPython群集中。我在Windows Vista 64位上使用Anacondas
from IPython.parallel import Client
rc = Client()
dview = rc[:]
with dview.sync_imports():
import lib.rf
它给了我这个错误:
No module named 'lib.rf'
我可以在我的IPython笔记本的其余部分导入模块,因为我有这个.bat文件来启动ipython notebook:
cd C:\Users\Jon\workspace\bf
set PYTHONPATH=%PYTHONPATH%;C:\Users\Jon\workspace\bf
C:\Anaconda\envs\p33\scripts\ipython notebook
我正在使用这个类似的代码启动我的ip集群:
cd C:\Users\Jon\workspace\bf
set PYTHONPATH=%PYTHONPATH%;C:\Users\Jon\workspace\bf
C:\Anaconda\envs\p33\Scripts\ipcluster start --n=7
为什么这不起作用?
更多信息:
如果我打印出sys.path,我会得到一个包含C:\ Users \ Jon \ workspace \ bf的列表
如果我打印出我的群集的路径,我会得到相同的列表:
%px sys.path
['',
'',
'',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\distribute-0.6.28-py3.3.egg',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\pykalman-0.9.5-py3.3.egg',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\patsy-0.2.1-py3.3.egg',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\joblib-0.8.3_r1-py3.3.egg',
'C:\\Users\\Jon\\workspace\\bf',
'C:\\Users\\Jon\\workspace\\bf\\my_numba',
'C:\\Anaconda\\envs\\p33\\python33.zip',
'C:\\Anaconda\\envs\\p33\\DLLs',
'C:\\Anaconda\\envs\\p33\\lib',
'C:\\Anaconda\\envs\\p33',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\Sphinx-1.2.3-py3.3.egg',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\win32',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\win32\\lib',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\Pythonwin',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\runipy-0.1.1-py3.3.egg',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\setuptools-7.0-py3.3.egg',
'C:\\Anaconda\\envs\\p33\\lib\\site-packages\\IPython\\extensions']
In [45]:
进一步分析:
%px lib.__path__
Out[0:11]: _NamespacePath(['C:\\Anaconda\\envs\\p33\\lib\\site-packages\\win32\\lib'])
lib.__path__
Out[57]: ['.\\lib']
看起来ipcluster和笔记本在不同的地方看着lib。我已经尝试将lib重命名为mylib。它没有帮助。
答案 0 :(得分:1)
似乎with dview.sync_imports()
正在IPython Notebook环境以外的某个地方运行,因此依赖于不同的PYTHONPATH。它绝对不是在其中一个集群引擎上运行,因此不希望它利用PYTHONPATH的集群设置。
我认为你需要在你的PYTHONPATH(而不是你的PATH)中为调用 python环境提供该目录,因为这是你导入模块的位置。
您在调用ipclusters的DOS shell中设置PYTHONPATH的影响对我来说并不清楚。我可以看到有人可能希望这让引擎知道你的目录,但我想知道PYTHONPATH是否被启动到你调用IPython.parallel.Client
的环境。