Jetson Nano部署TensorFlow代码报文件不存在错误咨询
错误原因
这个是标准的文件路径不存在错误,和TensorFlow框架、Jetson Nano硬件环境没有关联,触发核心是代码第23行json_file = open(jsonPath, 'r')传入的路径/home/Documents/unetarchi.json无法在Nano的文件系统里找到对应文件,常见诱因:
- 硬编码路径不兼容:写代码时用了原开发设备的路径,移植后没有对应修改。你写的
/home/Documents/本身就是不符合Linux目录规范的错误路径——Linux系统中/home目录下存放的是所有用户的独立家目录,不存在全局的Documents文件夹,正常Documents目录的路径是/home/[你的用户名]/Documents,直接写/home/Documents必然找不到位置。 - 文件漏传:移植代码时只拷贝了Python脚本,没有把
unetarchi.json这个UNet模型结构配置文件同步传到Jetson Nano上。 - 工作目录不匹配:如果
jsonPath用的是相对路径,执行脚本时终端所在的工作目录不是脚本所在目录,会导致路径拼接偏移,定位到错误的位置。 - 文件名不匹配:Linux文件系统区分大小写,如果你实际存的文件是
unetarchi.JSON、unet_archi.json这类和代码里拼写、大小写不一致的名字,也会被判定为文件不存在。
排查&解决步骤
按顺序操作即可解决:
- 先确认文件是否真的存在于Nano上,在终端执行全局查找命令:
find / -name "unetarchi.json"
如果命令没有返回任何路径结果,说明文件没传到开发板,把该json文件从原设备拷贝到Nano的代码目录下即可。
2. 改掉硬编码绝对路径的坏习惯,换成基于脚本自身位置的动态路径拼接,从根源上避免跨设备路径不兼容、工作目录偏移的问题,示例代码如下:
import os # 获取当前运行的py文件所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接json文件路径,这里假设json和py脚本放在同一个文件夹下 jsonPath = os.path.join(script_dir, "unetarchi.json") # 再执行文件读取操作 json_file = open(jsonPath, 'r')
- 如果你确实要把文件存在Documents目录下,先在终端执行
whoami拿到当前登录的用户名,正确的绝对路径应该是/home/[刚才查到的用户名]/Documents/unetarchi.json,替换代码里的路径即可。 - 最后核对文件名的拼写和大小写,确保磁盘上存的文件名和代码里写的完全一致。
内容的提问来源于stack exchange,提问作者Dary Zhafran
相关产品推荐
相关产品推荐

