导入tf_agents.environments触发AttributeError报错求助
问题描述
导入tf_agents.environments模块时触发AttributeError异常,核心报错信息如下:
File "C:\Users\larsa\AppData\Local\Programs\Python\Python310\lib\site-packages\tensorflow_probability\python\internal\backend\numpy\nest.py", line 68, in <module> assert_same_structure = dm_tree.assert_same_structure AttributeError: module 'tree' has no attribute 'assert_same_structure'
已尝试的修复操作:
- 将
dm_tree依赖更新到0.1.7版本 - 安装tensorflow、tf_agents的nightly版本
以上操作执行后问题未解决。
问题根因
报错由两个原因共同导致:
- 包名冲突:Python环境中安装了名为
tree的无关第三方包,而tensorflow_probability内部代码通过import tree的方式调用dm-tree的接口,实际导入的是无关的tree包,因此找不到assert_same_structure属性 - 版本不匹配:nightly版本的tf_agents、tensorflow_probability对
dm-tree的最低版本要求高于0.1.7,旧版本dm-tree本身也存在对应属性缺失的问题
排查与解决方案
按顺序执行以下操作即可修复:
- 清理环境内的冲突包与不匹配版本依赖,执行命令:
pip uninstall -y tree dm-tree tensorflow tf-agents tensorflow-probability
- 验证冲突包是否清理干净:
- Windows环境执行:
pip list | findstr tree - Mac/Linux环境执行:
pip list | grep tree
如果返回结果中还有名为tree的包,重复执行上一步的卸载命令,直到查询无相关输出为止。
- Windows环境执行:
- 安装版本匹配的依赖包:
- 若不需要强制使用nightly版本,直接安装经过兼容性验证的稳定版组合:
pip install tensorflow==2.13.0 tensorflow-probability==0.21.0 dm-tree==0.1.8 tf-agents==0.17.0- 若必须使用nightly版本,安装完成后做导入校验:打开Python交互解释器,依次执行以下代码
当打印的文件路径包含import tree print(tree.__file__) print(hasattr(tree, 'assert_same_structure'))dm_tree字段、且hasattr返回值为True时,说明依赖导入链路正常,此时再导入tf_agents.environments就不会触发报错。
内容的提问来源于stack exchange,提问作者Vizart
相关产品推荐
相关产品推荐

