如何设置Ray运行时环境的working_dir以跨目录导入模块?
解决Ray跨目录模块导入时working_dir设置导致的挂起问题
设置working_dir="/home"时Ray初始化挂起,本质是Ray会同步指定目录下的所有文件,/home包含大量系统文件、用户数据等,同步量过大导致进程阻塞。推荐以下两种轻量化方案:
方案一:直接同步目标模块所在目录
将working_dir设置为目标模块的根目录,仅同步必要代码:
ray.init(working_dir="/home/target_module")
之后在main.py中可直接导入模块:
import module
方案二:同步当前脚本目录 + 手动添加模块路径
保持working_dir为启动脚本所在目录,避免同步无关内容:
ray.init(working_dir="/home/another_module")
同时在main.py开头添加代码,将目标模块目录加入Python搜索路径:
import sys sys.path.append("/home/target_module") # 正常导入目标模块 from module import *
关键提示
Ray的working_dir核心作用是将本地代码同步到集群所有节点,因此务必只同步必要的代码目录,避免同步系统目录、大体积数据目录等,否则会大幅延长初始化时间甚至导致挂起。
内容的提问来源于stack exchange,提问作者user3761743
相关产品推荐
相关产品推荐

