unexpectly import my local module when it is not necessary
还没有人认领这个 Issue。
评估
调研方向
从 ai2_kit/domain.py 中的 reproducer 以及 ai2_kit/executor.py 中的 run_python_fn 和 run_python_script 方法入手。在 Python 3.9 下,使用提供的 pickle 数据进行调试,比较嵌套函数 in_add 与模块级函数 out_add 的序列化行为。完成的标准是解释或修正远程执行为何会导入 ai2_kit,或者记录一种受支持的 workaround。
由索引模型根据 Issue 内容生成。
描述
In file ai2_kit/domain.py
def fun(ctx):
def in_add(a, b):
print (a+b)
ctx.executor.run_python_fn(in_add)(1, 2) # this pass
ctx.executor.run_python_fn(out_add)(1, 2) # this failed, the error is: ModuleNotFoundError: No module named 'ai2_kit'
def out_add(a, b):
print(a+b)
the method run_python_fn is defined in ai2_kit/executor.py , the basic idea is use python -c to execute a python script on remote machine.
def run_python_script(self, script: str):
return self.connector.run('python -c {}'.format(shlex.quote(script)))
def run_python_fn(self, fn: T, python_cmd=None) -> T:
def remote_fn(*args, **kwargs):
dumped_fn = base64.b64encode(cloudpickle.dumps(lambda: fn(*args, **kwargs), protocol=pickle.DEFAULT_PROTOCOL))
script = '''import base64,pickle; pickle.loads(base64.b64decode({}))()'''.format(repr(dumped_fn))
self.run_python_script(script=script, python_cmd=python_cmd)
I have no idea why it will import ai2_kit when use a function outside of current function, the method out_add doesn't have any external dependencies. Is there any method to workaround this problem? Thank you! Both local and remote python is v3.9.
The error pickle (base64) for debug:
gASVFAMAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwNX2J1aWx0aW5fdHlwZZSTlIwKTGFtYmRhVHlwZZSFlFKUKGgCjAhDb2RlVHlwZZSFlFKUKEsASwBLAEsASwRLE0MOiAGIAGkAiAKkAY4BUwCUToWUKSmMRS9ob21lL2hlbnJ5L3NyYy9jYy1wcm9qZWN0cy9wcm9qZWN0cy9haTIta2l0L2FpMl9raXQvY29yZS9leGVjdXRvci5weZSMCDxsYW1iZGE+lEuMQwCUjARhcmdzlIwCZm6UjAZrd2FyZ3OUh5QpdJRSlH2UKIwLX19wYWNrYWdlX1+UjAxhaTJfa2l0LmNvcmWUjAhfX25hbWVfX5SMFWFpMl9raXQuY29yZS5leGVjdXRvcpSMCF9fZmlsZV9flIxFL2hvbWUvaGVucnkvc3JjL2NjLXByb2plY3RzL3Byb2plY3RzL2FpMi1raXQvYWkyX2tpdC9jb3JlL2V4ZWN1dG9yLnB5lHVOTmgAjBBfbWFrZV9lbXB0eV9jZWxslJOUKVKUaBwpUpRoHClSlIeUdJRSlIwcY2xvdWRwaWNrbGUuY2xvdWRwaWNrbGVfZmFzdJSMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgifZR9lChoF2gMjAxfX3F1YWxuYW1lX1+UjD5IcGNFeGVjdXRvci5ydW5fcHl0aG9uX2ZuLjxsb2NhbHM+LnJlbW90ZV9mbi48bG9jYWxzPi48bGFtYmRhPpSMD19fYW5ub3RhdGlvbnNfX5R9lIwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaBiMB19fZG9jX1+UTowLX19jbG9zdXJlX1+UaACMCl9tYWtlX2NlbGyUk5RLAUsChpSFlFKUaDKME2FpMl9raXQuZG9tYWluLmNwMmuUjANhZGSUk5SFlFKUaDJ9lIWUUpSHlIwXX2Nsb3VkcGlja2xlX3N1Ym1vZHVsZXOUXZSMC19fZ2xvYmFsc19flH2UdYaUhlIwLg==
- 主要语言
- Python
- 星标
- 1.9k
- 派生
- 197
- 平均合并
- 1 天 10 小时
- 30 天内合并 PR
- 1
环境准备
我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
cloudpipe/cloudpickle 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
cloudpipe/cloudpickle#593 · 1 条评论 ·
-
难度 4/5 3-5 天 新手友好度 42/100
cloudpipe/cloudpickle#595 ·
-
难度 3/5 1-2 天 新手友好度 65/100
cloudpipe/cloudpickle#592 · 2 条评论 ·
-
难度 5/5 一周以上 新手友好度 35/100
cloudpipe/cloudpickle#589 ·
-
难度 5/5 一周以上 新手友好度 20/100
cloudpipe/cloudpickle#587 ·
查看 cloudpipe/cloudpickle 的全部 Issue
相似的 Issue
-
pydanty:is-working
难度 2/5 1-3 小时 新手友好度 78/100
pydantic/pydantic-ai#8843 ·
维护者通常 1 天内回复
-
breaking change enhancement server
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 88/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
needs-triage
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 1 天内回复