Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在ipyparallel中运行时,自定义内核挂起_Python_Conda_Jupyterhub - Fatal编程技术网

Python 在ipyparallel中运行时,自定义内核挂起

Python 在ipyparallel中运行时,自定义内核挂起,python,conda,jupyterhub,Python,Conda,Jupyterhub,我正在尝试将ipyparallel与我已安装在conda env中的自定义内核一起使用。我的工具是用matplotlib 2.0.2构建的。我在一个Jupyter集线器上运行,默认的Python3内核指向matplotlib 1.5.3。我可以通过以下示例从各个引擎中看到matplotlib的版本: import ipyparallel import matplotlib def myFunc(n): import matplotlib status = "mpl versio

我正在尝试将ipyparallel与我已安装在conda env中的自定义内核一起使用。我的工具是用matplotlib 2.0.2构建的。我在一个Jupyter集线器上运行,默认的Python3内核指向matplotlib 1.5.3。我可以通过以下示例从各个引擎中看到matplotlib的版本:

import ipyparallel
import matplotlib

def myFunc(n):
    import matplotlib
    status = "mpl version=%s, and num=%d" % (matplotlib.__version__, 
                                             n * 10)
    return status

rc=ipyparallel.Client(profile='MJBtest')
all_proc = rc[:]
all_proc.block=True

print("Local: ", matplotlib.__version__)

inlist = [i for i in range(3)]
print("Now calling map_sync")
result = all_proc.map_sync(myFunc, inlist)
print("Parallel result : ", result)
返回

Local:  1.5.3
Now calling map_sync
Parallel result :  ['mpl version=1.5.3, and num=0', 'mpl version=1.5.3, and num=10', 'mpl version=1.5.3, and num=20']
正如我所期望的,因为我是在Python3默认内核中运行的。通过使用我想要的工具创建一个自定义内核,激活它,并使用以下命令创建一个kernelspec文件,我构建了一个名为“cetb3”的自定义内核:

ipython kernel install --user --name cetb3
在cetb3环境中,我可以运行python,导入matplotlib,我看到版本是matplotlib 2.0.2。从同一个cetb3环境中,我还创建了一个测试配置文件:

ipython profile create --parallel --profile=MJBtest
在Jupyter Hub中,我可以将内核切换到cetb3,导入matplotlib,并查看它是否位于v2.0.2。但是,当我从MJBtest启动集群,并尝试使用cetb3内核运行与上述相同的代码时,该单元挂起在“Now calling map_sync”行之后,并且永远不会返回:

Local:  2.0.2
Now calling map_sync
我想我可能必须创建一个使用自定义内核的ipython配置文件,我尝试将我的配置文件的名称添加到cetb3 kernelspec文件中:“--profile=MJBtest”,但当我这样做时,内核甚至无法启动。我不清楚我是否必须告诉我的内核我的配置文件,或者反过来告诉我的内核我的配置文件(以及我可能如何做),或者是否有其他机制将我的定制环境推到我的ipyparallel引擎


因此,我在我们的超级计算机上与sys管理员合作,结果发现他们配置了一些定制的ipython配置文件,这些配置文件使用ipengine命令启动引擎集群。在ipcluster_config.py文件中,在执行ipengine命令之前,我可以通过将我的conda env bin路径添加到path env变量的开头,然后为我希望在每个引擎上可用的conda env调用source activate来指定我的自定义环境。

而不是创建自己的内核,为什么不将
ipykernel
安装到环境中,以消除您的所有依赖关系?我不确定您的意思,您能详细解释一下吗?我想我必须制作自己的内核,因为jupyterhub提供给我的默认内核只是一些Python2和Python3的默认安装。
ipykernel
是一个将IPython内核安装到您的环境中的包,这样您就可以从Jupyter笔记本访问它。只是一个想法:-)这不是“ipython内核安装”命令所做的吗?运行该命令并重新加载jupyter控制台后,我可以很好地切换到新内核,并且可以很好地看到安装在这个环境中的包。当我试着将它们推到ipyparallel的多个引擎时,问题就出现了。这是挂起的步骤。对不起,我不确定这里发生了什么:-(