OpenNMT-py翻译命令执行报错求助:文件未找到问题
OpenNMT-py翻译命令执行报错排查
问题背景
在OpenNMT-py目录下的sample1文件夹中,已完成两项前置操作:
- 数据准备(创建词汇表)
- 数据训练
执行翻译命令时触发错误。
执行的命令
onmt_translate -model sample1/newmodel_step_1200.pt -src sample1/src-test.hi -output sample1/pred_1000.txt -verbose
报错信息
(nmt1) C:\Users\anurag\OpenNMT-py>onmt_translate -model sample1/newmodel_step_1200.pt -src sample1/src-test.hi -output sample1/pred_1000.txt -verbose Traceback (most recent call last): File "C:\Users\anurag\anaconda3\envs\nmt1\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None) File "C:\Users\anurag\anaconda3\envs\nmt1\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\anurag\anaconda3\envs\nmt1\Scripts\onmt_translate.exe\_main_.py", line 7, in <module> File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\bin\translate.py", line 60, in main translate(opt) File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\bin\translate.py", line 41, in translate _, _ = translator._translate( File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\translate\translator.py", line 343, in _translate for batch in infer_iter: File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\inputter.py", line 28, in __iter__ for tensor_batch in self.iterable: File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\dynamic_iterator.py", line 290, in __iter__ for bucket in self._bucketing(): File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\dynamic_iterator.py", line 231, in _bucketing for ex in self.mixer: File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\dynamic_iterator.py", line 45, in __iter__ yield from iterable File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\text_corpus.py", line 209, in __iter__ yield from indexed_corpus File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\text_corpus.py", line 186, in _add_index for i, item in enumerate(stream): File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\text_corpus.py", line 170, in _transform for example in stream: File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\text_corpus.py", line 153, in _tokenize for example in stream: File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\text_corpus.py", line 63, in load with exfile_open(self.src, mode='rb') as fs,\ File "C:\Users\anurag\anaconda3\envs\nmt1\lib\contextlib.py", line 113, in __enter__ return next(self.gen) File "C:\Users\anurag\anaconda3\envs\nmt1\lib\site-packages\onmt\inputters\text_corpus.py", line 32, in exfile_open _file = codecs.open(filename, *args, **kwargs) File "C:\Users\anurag\anaconda3\envs\nmt1\lib\codecs.py", line 905, in open file = builtins.open(filename, mode, buffering) FileNotFoundError: [Errno 2] No such file or directory: 'sample1/src-test.hi'
问题根源
报错核心是FileNotFoundError: [Errno 2] No such file or directory: 'sample1/src-test.hi',说明系统找不到指定路径下的测试源文件src-test.hi。
解决步骤
- 检查文件存在性:打开
sample1文件夹,确认是否存在src-test.hi文件,注意文件名大小写、后缀名是否完全匹配。 - 核对路径正确性:如果当前工作目录不是OpenNMT-py根目录,需改用绝对路径指定文件,例如
C:\Users\anurag\OpenNMT-py\sample1\src-test.hi。 - 补全缺失文件:若文件确实缺失,重新准备测试集数据,将
src-test.hi放入sample1文件夹后再执行命令。
内容的提问来源于stack exchange,提问作者Anurag Rao
相关产品推荐
相关产品推荐

