事情起因:组会临时要抱佛脚跑通自己的代码,但是课题组都放假了办公室就自己一个人倒腾,尝试 GPT 了几个相关方案都没有解决,自己回办公室十分郁闷,和室友吐槽...
背景描述:
在 Github 上下载到的一个 RL 用于地学问题的代码库,配有 UCL 的硕士毕业论文。
主程序是:ipynb 文件,其中主程序调用了 src 文件夹下面的 envs 文件夹的控制环境和 learn 文件夹中的强化学习组件。
下面是依次出现的 bug 及解决方案
-
bug 起因:主程序中调用作者写的第三方包出现导入的相关错误,报错为缺少模块
添加图片注释,不超过 140 字(可选)
解决方案,找到其中调用的 envs ,重新更改调用的文件夹对象
添加图片注释,不超过 140 字(可选)
2. bug 起因:找不到包
吐槽:写在包中的文件明明在单独程序可以访问,为什么导出时候出现问题
添加图片注释,不超过 140 字(可选)
解决:通过加入玄学的 . 使得 from learn_class import Learn 变成 from .learn_class import Learn
3. bug 起因:同上,找不到模块,明明已经识别
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
解决:通过加入玄学的 . 使得 from envs.AYS.AYS_Environment import * 变成 from .envs.AYS.AYS_Environment import *
4. bug 起因:同上,找不到模块,明明已经识别
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
解决:通过加入玄学的 .
5. bug 起因:找不到模块
添加图片注释,不超过 140 字(可选)
解决:通过加入玄学大法2的,将 import ays_model as ays 之前加上 from .
添加图片注释,不超过 140 字(可选)
6. bug 起因:同上问题,同样解决
7. bug 起因:循环导入
ImportError: cannot import name 'Learn' from partially initialized module 'src.learn_class' (most likely due to a circular import) (D:\zhihu\climate_policy_rl-main\src\learn_class.py)
添加图片注释,不超过 140 字(可选)
解决方案:通过 GPT 建议可能是重复导入,因此删除该语句(笨蛋了,里面多的和本身的程序重复)
添加图片注释,不超过 140 字(可选)
终于解决了
添加图片注释,不超过 140 字(可选)
复盘反思:
-
耐心分解,遇到问题解决,不要想着完全弄懂,完美主义
2. 和有经验的人耐心交流,这次很感谢室友帮助,一起 debug 帮助很大,卡主时候不妨多散散步相信自己
3. 遇到具体的问题先弄懂定义再解决它,比如查询一下导包的几个方案,熟悉套路,也许偶然替换有帮助
参考文章:
提供了导包套路的操作方案
Python中库导入from . import 和from .. import 的使用方法
总结:
如果你也出现了包和模块的导入问题出现,不妨将 import 前面加上 from . 或者将 import xx 改成 import .xx