最近在调试marllib的代码,遇到一些错误,一开始手足无措,后来经过查询资料,请教了好多同学,在得以解决。为了帮助像我一样的小白尽快进入课题,不被这些序偶无困扰,所以记录下来,帮助一起前进的同学。
ImportError
git clone https://github.com/MultiAgentLearning/playground
cd playground
pip install .
cd /home/YourPathTo/MARLlib/patch
python add_patch.py --pommerman
pip install gym==0.21.0
在安装pommerman时,执行python add_patch.py --pommerman出现错误,废话不多说,直接上图。
importerror :cannot import name 'reraise' from 'gym.utils'
通过上述错误,我们发现,原因是在上述路径下 gym文件夹下的utils文件夹的reraise文件出现了某种错误,我们切换到该路径下去查看文件,发现相关文件夹下并没有这个reraise的文件。通过在百度搜索,我们发现reraise属于pytest包,所以在环境下安装Pytest的包。为此我们使用如下命令进行安装。
pip install pytest-reraise
成功安装之后我们会发现,在你的pytest_reraise文件夹下会有reraise.py文件,
将文件复制到gym下的utils文件夹下,
经过上述操作,我们发现我们的问题已经解决。但是在执行过程中出现下面的错误类型。
AttributeError
在此执行python add_patch.py --pommerman -y -p 出现以下错误。
经过搜索,查找了半天都没找到问题,后来经过查看一篇帖子,地址在这https://blog.csdn.net/hello_earth616/article/details/127566692,终于找到类似的问题,原因是环境的问题,我们按照帖子的内容进行修改,先卸载之前的pyglet,再使用Conda进行安装,如果使用是最新的anconda 可能会出现错误。所以可以使用pip 对pyglet进行降低版本,使用如下命令进行更新。
pip install pyglet==1.5.9
conda install pyglet
根据自己的情况可以选择执行conda命令或者pip指令。不出问题的话,我们运行主函数并附上相关的参数配置,我们的程序就可以运行啦。
python marl/main.py --algo_config=mappo --finetuned --env_config=pommerman with env_args.map_name=OneVsOne-v0
经过不断踩坑,终于运行起来了,和大家分享一下快乐。
下一步可以安心的去看文献,研究算法了。
总结
1.ImportError,一般是导入的包或者文件有问题,需要我们到相应的文件夹下面去查看文件是否存在,如果不存在,我们只需要安装相应的模块或者将文件放入相关目录之下就行,一般错误就会解决。
2.AttributeError,可能会因为某些包的版本不对(如果是复现别人的代码),或者是代码的模块或者函数的名称不对,需要仔细检查(自己的代码)。
最后希望自己踩的坑能够帮助到大家,如果对大家有帮助,希望大家可以顺便点赞,收藏和转发。如果有不同的错误,欢迎大家在下方留言,大家一起学习,共同进步。
路虽远行则将至,事虽难做则必成。希望在学习的路上,大家可以共同进步,坚持到最后。