在dask jupyter节点上,我具有以下文件布局:
main/
src/
subfolder/
file1.py
file2.py
file3.py
main.py
main.py
中的代码大致如下:
# main.py
from distributed import Client
from src.subfolder.file1 import important_function
# ...
cluster_address = os.environ.get('CLUSTER_ADDRESS','dask-scheduler:8786')
client = Client(cluster_address)
arg1,arg2 = ...
future = client.submit(important_function,arg1,arg2)
result = future.result()
实际上,由于我从模板创建了轻快的工作者,因此故事变得更加复杂。但是,尽管如此,我认为这说明了问题。运行此代码时,出现以下错误消息:
Traceback (most recent call last):
...
File "main.py",line 151,in ...
result = future.result()
File "/opt/conda/lib/python3.7/site-packages/distributed/client.py",line 222,in result
raise exc.with_traceback(tb)
File "/opt/conda/lib/python3.7/site-packages/distributed/protocol/pickle.py",line 59,in loads
return pickle.loads(x)
ModuleNotFoundError: No module named 'src'
我尝试的方法:生成工作程序时,我将所有源文件夹都复制到工作程序中。所有源文件都位于工作服务器上的/build
中。因此,以上示例中main
的全部内容实际上位于工作线程上的目录/build
中。我想我需要以某种方式告诉工作人员,它所接收的功能应在/build
中作为其工作目录执行。这是要走的路吗?有人对如何解决这个问题有任何想法吗?