繁体   English   中英

Dask Worker 在 AWS 上找不到模块

[英]Dask Worker can't find module on AWS

所以我有一个分布式的 dask 设置,调度程序在一个容器上运行,工作人员在另一个容器上运行。 我在 AWS 上有一个类似的设置,其中调度程序在 EC2 实例上运行,而工作人员在另一台 EC2 机器的 docker 容器上。

我希望工作人员可以使用 python 文件。 我还不想将它作为依赖项直接安装到工作人员,但想手动将此文件复制到工作人员,以便它在工作人员使用的 python 环境中可用。 为此,我将其添加到 DOCKERFILE 中:

# syntax=docker/dockerfile:experimental
FROM daskdev/dask:2020.12.0

WORKDIR /src/
COPY ./python_file.py /src/python_file.py

基本上我希望 dask 工作人员能够在python_file.py中运行一个方法。 所以我提交的方法如下:

client.submit(python_file.some_method, arg1, arg2)

这在我的本地 dask 设置上运行良好,并且工作人员能够反序列化此调用并运行该方法。 不知何故,这在 AWS 设置中不起作用。 工人不断抱怨:

ModuleNotFoundError: No module named 'python_file'

调试:

  • 我登录到 EC2 机器,我看到容器是活动的。
  • 我进入了容器,我看到该文件也存在于我想要的位置(就像我的本地一样)。
  • 我跑了 python 并尝试导入模块,这也有效。
  • 我跑了 `pickle.loads(b'\x80\x04\x95#\x00\x00\x00\x00\x00\x00\x00\x8c\python_file\x94\x8c\x0esome_method\x94\x93\x94.') 和返回所需的方法。

如果所有这些都有效,那么工人仍然抱怨模块不存在的其他原因是什么? 有没有其他人遇到过类似的事情?

听起来像是 PYTHONPATH 问题 - 在您的本地计算机上,python 文件可能存在于当前工作目录(位于您的 PYTHONPATH 上)中。 你能确认src在你的 PYTHONPATH 上吗? 如果没有,我会将其作为 ENV 添加到您的 docker 图像中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM