Replies: 1 comment 1 reply
-
根据你的错误信息 NotADirectoryError: [WinError 267] ディレクトリ名が無効です(“目录名无效”),结合日志中的命令行调用: ['D:\anaconda3\envs\ocr2\python.exe', 'tools/train.py', '-c', 'D:\OCR2\mymodels\paddlex\tmph8glrixz\textdetmodel_PP-OCRv4_mobile_det.yml'] 可以判断训练过程中,PaddleX 动态生成了一个临时配置文件 textdetmodel_PP-OCRv4_mobile_det.yml,位于目录: D:\OCR2\mymodels\paddlex\tmph8glrixz\ 但关键在于,这个路径可能在模型初始化阶段就被删除或创建失败,导致最终执行 train.py 时无法找到该目录。 根据源码 logs,我们看到 paddlex 在调用 subprocess 前利用了 asyncio 的 create_subprocess_exec 来执行命令。这种方式对路径的要求较高,尤其需要确保传入的可执行文件路径和参数中的路径为合法的目录和文件。 你的报错行: File "D:\anaconda3\envs\ocr2\lib\subprocess.py", line 1327, in _execute_child 明确指出 executable 或 args 指定的某个路径不是合法目录名。 📌 可能原因如下:
✅ 解决建议:
🔎 延伸阅读: 此类临时配置目录报错,在 PaddleX 与 Windows 的 subprocess 使用中曾被多次提到,但并不是框架 bug,更像是某些 edge case 被触发,文件访问与目录权限等有关。 如果你希望获取更多帮助,可尝试在 GitHub 提 issue,并提供临时 config 文件是否存在的确认情况。 希望这些建议能帮助你解决该问题。 Response generated by 🤖 feifei-bot | chatgpt-4o-latest |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
我在虚拟环境下的以下路径 D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex,执行了以下cmd命令python main.py -c paddlex/configs/modules/text_detection/PP-OCRv4_mobile_det.yaml -o Global.device=cpu -o Global.mode=train -o Global.dataset_dir=D:\OCR2\Codes\dataset\ocr_det_dataset_examples
命令行打印出了以下信息:
['D:\anaconda3\envs\ocr2\python.exe', 'tools/train.py', '-c', 'D:\OCR2\mymodels\paddlex\tmph8glrixz\textdetmodel_PP-OCRv4_mobile_det.yml']
Log path: D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex\output\train.log
Traceback (most recent call last):
File "D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex\paddlex\utils\result_saver.py", line 29, in wrap
result = func(self, *args, **kwargs)
File "D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex\paddlex\engine.py", line 41, in run
self._model.train()
File "D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex\paddlex\model.py", line 101, in train
trainer.train()
File "D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex\paddlex\modules\base\trainer.py", line 88, in train
train_result = self.pdx_model.train(**train_args)
File "D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex\paddlex\repo_apis\PaddleOCR_api\text_rec\model.py", line 149, in train
return self.runner.train(
File "D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex\paddlex\repo_apis\PaddleOCR_api\text_rec\runner.py", line 56, in train
return self.run_cmd(
File "D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex\paddlex\repo_apis\base\runner.py", line 345, in run_cmd
retcode = asyncio.run(
File "D:\anaconda3\envs\ocr2\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "D:\anaconda3\envs\ocr2\lib\asyncio\base_events.py", line 616, in run_until_complete
return future.result()
File "D:\anaconda3\envs\ocr2\Lib\site-packages\paddlex\paddlex\repo_apis\base\runner.py", line 309, in _tee_proc_call
proc = await proc_call
File "D:\anaconda3\envs\ocr2\lib\asyncio\subprocess.py", line 236, in create_subprocess_exec
transport, protocol = await loop.subprocess_exec(
File "D:\anaconda3\envs\ocr2\lib\asyncio\base_events.py", line 1630, in subprocess_exec
transport = await self._make_subprocess_transport(
File "D:\anaconda3\envs\ocr2\lib\asyncio\windows_events.py", line 389, in _make_subprocess_transport
transp = _WindowsSubprocessTransport(self, protocol, args, shell,
File "D:\anaconda3\envs\ocr2\lib\asyncio\base_subprocess.py", line 36, in init
self._start(args=args, shell=shell, stdin=stdin, stdout=stdout,
File "D:\anaconda3\envs\ocr2\lib\asyncio\windows_events.py", line 885, in _start
self._proc = windows_utils.Popen(
File "D:\anaconda3\envs\ocr2\lib\asyncio\windows_utils.py", line 153, in init
super().init(args, stdin=stdin_rfd, stdout=stdout_wfd,
File "D:\anaconda3\envs\ocr2\lib\subprocess.py", line 858, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "D:\anaconda3\envs\ocr2\lib\subprocess.py", line 1327, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
NotADirectoryError: [WinError 267] ディレクトリ名が無効です。
我认为是'D:\OCR2\mymodels\paddlex\tmph8glrixz\textdetmodel_PP-OCRv4_mobile_det.yml'导致了问题,但我不知道如何解决
Beta Was this translation helpful? Give feedback.
All reactions