我正在 hpc 上运行我的 DASK 服务器,其中我拥有运行 dask 所需的所有基本模块,并且我正在 jupyter 笔记本中加载该模块。我想使用 dask 和 dask 基础环境中不可用的模块来运行一些处理任务。为此,我使用 conda 创建了自定义环境。在运行我的任务之前,有没有一种简单的方法可以将这个新的公寓环境链接到 dask 客户端。
我尝试过使用
from dask.distributed import Client,LocalCluster
client = Client(scheduler_file=schedule_json)
print(client)
client.upload_file('condaenvfile.tar')
我也尝试过使用
client.run(os.system,'conda install -c conda-forge package -y')
但我仍然收到类似模块未找到的消息。
我正在使我的问题更加清晰,以便我可以找出是否有其他替代方案来处理此类问题。
import skimage
import dask.distributed import Client
client=Client(schedule_json)
def myfunc(param):
process using skimage
r=[]
for in [list]:
myres=dask.delayed(myfun)(param)
r.append(myres)
allres=dask.compute(*r)
在上面的示例中,我有在 hpc 环境中运行的 dask 模块,我没有任何控制权,只是可以加载该模块。我的用户配置文件中有自己的公寓环境,我必须使用 dask 工作人员使用sklearn(和其他模块)运行一些进程。有什么替代方案可以解决此类问题?
最佳答案
一旦 dask 运行,您就无法切换底层 Python 环境。相反,您应该构建一个包含所需的所有库和依赖项的环境,并从新创建的环境运行。为了帮助创建环境,我建议使用 conda-pack 。如果您想修改现有环境,您可以这样做,但我不推荐这样做。如果您非常关心这个问题,您可能会对 https://github.com/dask/distributed/issues/3111 感兴趣。
关于python - 为 DASK 工作人员使用新的 python 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62494246/