VizDoom加载basic.cfg遇FileDoesNotExistException错误求助
解决VizDoom
FileDoesNotExistException 路径问题 作为Python和强化学习新手,遇到路径问题真的很常见,咱们一步步拆解问题、解决它:
核心误区:Jupyter的工作目录≠Notebook文件位置
你可能以为相对路径是基于Notebook所在的~/Documents/TestProject/,但Jupyter默认的**当前工作目录(CWD)**其实是你的用户主目录(~/)!这就是你用../../scenarios/basic.cfg找不到文件的原因——从~/往上跳两级就到了根目录/,根本不存在/scenarios文件夹。
先确认当前工作目录
在Notebook里运行这段代码,看看实际的工作路径:
import os print("当前工作目录:", os.getcwd())
如果输出是/home/你的用户名/(也就是~/),那就能完全解释之前的路径失效问题了。
几种可靠的解决方案
方案1:验证并使用绝对路径
你之前尝试的绝对路径/usr/local/lib/python3.6/dist-packages/vizdoom/scenarios/basic.cfg理论上是可行的,先在终端里验证文件是否真的存在:
ls /usr/local/lib/python3.6/dist-packages/vizdoom/scenarios/basic.cfg
如果终端能显示文件信息,那回到Notebook里重新运行绝对路径的代码,注意不要有拼写错误(Linux路径区分大小写)。
方案2:利用Python包资源加载(最推荐,跨环境通用)
VizDoom作为Python包,它的scenarios文件是包的一部分,我们可以用Python的包资源工具自动找到文件路径,不用硬编码绝对路径:
方法A(兼容Python 3.6+):
from pkg_resources import resource_filename # 自动获取vizdoom包下scenarios/basic.cfg的路径 cfg_path = resource_filename('vizdoom', 'scenarios/basic.cfg') game.load_config(cfg_path)
方法B(Python 3.7+ 更规范):
import importlib.resources # 安全获取包资源路径 with importlib.resources.path('vizdoom.scenarios', 'basic.cfg') as cfg_path: game.load_config(str(cfg_path))
这种方法不管VizDoom安装在哪个路径下,都能正确找到配置文件,适合不同环境。
方案3:复制配置文件到项目目录
如果你不想写复杂的代码,可以直接把VizDoom的scenarios文件夹复制到你的Notebook项目目录里:
cp -r /usr/local/lib/python3.6/dist-packages/vizdoom/scenarios ~/Documents/TestProject/
之后直接用相对路径加载:
game.load_config("scenarios/basic.cfg")
内容的提问来源于stack exchange,提问作者varun
相关产品推荐
相关产品推荐

