我有一个dask分布式脚本,它从一个文件中读取主机列表,并为我部署一个SSH集群(到目前为止还不错)。我没有使用dask-worker命令行工具,因为我希望所有内容都从一个父python脚本启动。我想使用这样设置的集群,在工作节点上使用subprocess.run或类似的东西来运行各种作业。
我要运行的进程是需要在适当的conda环境中启动的python作业。这就是我遇到麻烦的地方:尝试激活conda环境会让我在stderr中使用Your shell has not been properly configured to use 'conda activate'.。
我在shell=True中使用subprocess.run。考虑到我正常的shell设置为使用conda,我对这个错误感到有点惊讶。
dask分布式工作者似乎有一个非常有限的环境(我的.bashrc没有加载),我甚至不能尝试将源文件添加到环境中。如果我使用非分布式设置(distributed.Client()),那么激活相关的conda env没有问题,所以我猜这与dask分布式远程工作者环境的工作方式有关。我知道conda和相关环境在远程节点上可用(它们都挂载相同的文件系统)。
那么,有没有一种简单的方法来对dask分布式远程工作者说:“使用这个conda环境启动这个python脚本”,最好是使用subprocess.run
发布于 2020-06-09 18:22:15
事实证明,这是一个bash使用问题,而不是与dask有关。
如果我们强制bash是交互式的,那么我们就得到了我们期望的环境,并且可以运行作业。我寻找了一个更优雅的解决方案,但您很快就陷入了您的发行版认为它应该用作登录shell与非登录shell、交互shell与非交互shell等shell环境的细节中。
https://stackoverflow.com/questions/62223569
复制相似问题