为了账号安全,请及时绑定邮箱和手机立即绑定

Parallel:从兄弟文件夹导入一个python文件

Parallel:从兄弟文件夹导入一个python文件

呼如林 2021-10-19 10:00:18
我有一个目录树working_dir\    main.pymy_agent\    my_worker.pymy_utility\    my_utils.py每个文件中的代码如下""" main.py """import os, syssys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))from my_agent.my_worker import MyWorkerimport rayray.init()workers = [MyWorker.remote(i) for i in range(10)]ids = [worker.get_id.remote() for worker in workers]# print(*ids, sep='\n')print(*ray.get(ids), sep='\n')""" worker.py """from my_utility import my_utilsimport ray@ray.remoteclass MyWorker():    def __init__(self, id):        self.id = id    def get_id(self):        return my_utils.f(self.id)""" my_utils.py """def f(id):    return '{}: Everything is fine...'.format(id)这是我收到的错误消息的一部分回溯(最近一次调用最后一次):文件“/Users/aptx4869/anaconda3/envs/p35/lib/python3.5/site-packages/ray/function_manager.py”,第 616 行,在 fetch_and_register_actor unpickled_class = pickle.loads(pickled_class)文件“/Users/aptx4869/anaconda3/envs/p35/lib/python3.5/site-packages/ray/cloudpickle/cloudpickle.py”,第 894 行,子 导入导入(名称)导入错误:没有名为“my_utility”的模块回溯(最近一次调用最后一次):文件“main.py”,第 12 行,在 print(*ray.get(ids), sep='\n')文件“/Users/aptx4869/anaconda3/envs/p35/lib/python3.5/site-packages/ray/worker.py”,第 2377 行,在获取提升值 ray.worker.RayTaskError: ray_worker (pid=30025, host =AiMacbook)异常:名称为 MyWorker 的actor 导入失败,因此无法执行此方法如果我删除所有与 相关的语句ray,上面的代码就可以正常工作。因此,我大胆猜测原因是ray每个actor运行在一个新的进程中,并且sys.path.append只在主进程中起作用。所以我将以下代码添加到worker.pyimport os, syssys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))但它仍然不起作用:出现相同的错误消息。现在我的想法用完了,我该怎么办?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信