python3 报错 [Errno 5] Input/output error 没有stdout时使用了print

本文描述了在使用Tornado框架开发的项目中,遇到的后台运行时因远程SSH连接关闭导致的I/O错误问题。详细介绍了问题的原因在于程序中的print语句在失去shell后无法输出,给出了三种解决方案:通过crontab定时启动、注释或删除print语句、使用nohup命令运行。

过程描述

刚不久用 Tornado 写了一个项目,本打算部署在 Nginx 上,但是因为公司的一些原因就没有使用 Nginx,直接在命令行中启动

当我从命令行以后台的方式启动以后,是可以正常访问的

python start.py &

但是,当我关闭远程 ssh 连接后,程序就出问题了,程序没有任何反应,但是进程却好好的待在进程池中等待 CPU 的召唤。通过 try 捕获到了异常 [Errno 5] Input/output error

后经过排查找到了问题,这是因为我在程序中有 print 语句,当我把远程 ssh 退出后,就相当于把它的 shell 关闭了,没有了 shell 的进程 print 就没有地方输出字符,不能“写”到屏幕上了,所以就会报一个 I/O 错误

解决方案

  1. 不使用命令行的方式启动,将程序放入 crontab 中定时启动

  2. 注释或删除程序中有 print 语句的地方

  3. 使用 nohup 运行命令,可以使命令永久的执行下去,和用户终端没有关系,断开SSH连接都不会影响程序的运行

 

Using cached https://mirrors.tuna.tsinghua.edu.cn/pypi/web/packages/24/3c/4475aebeaab9651f2e61000fbe76f91a476d371dbfbf0a1cf46e689af253/cuda_python-12.9.0-py3-none-any.whl (7.5 kB) Collecting flashinfer_python==0.2.7.post1 (from sglang[srt]>=0.4.2.post4; sys_platform == "linux" and extra == "all"->xinference[all]) Using cached https://mirrors.tuna.tsinghua.edu.cn/pypi/web/packages/c0/10/43cf1ea7a03ca8e75a185190708e48286e1583d781e93d1de130e5d450ca/flashinfer_python-0.2.7.post1.tar.gz (3.2 MB) Installing build dependencies ... done Getting requirements to build wheel ... done Installing backend dependencies ... done Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error × Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [25 lines of output] 0 AOT ops found in /tmp/pip-install-5miuve_d/flashinfer-python_eff3c7d3d9c144ef8d5b1795255a9142/aot-ops Traceback (most recent call last): File "/data/anaconda3/envs/xinference/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module> main() File "/data/anaconda3/envs/xinference/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main json_out["return_val"] = hook(**hook_input["kwargs"]) File "/data/anaconda3/envs/xinference/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 175, in prepare_metadata_for_build_wheel return hook(metadata_directory, config_settings) File "/tmp/pip-install-5miuve_d/flashinfer-python_eff3c7d3d9c144ef8d5b1795255a9142/custom_backend.py", line 91, in prepare_metadata_for_build_wheel return orig.prepare_metadata_for_build_wheel(metadata_directory, config_settings) File "/tmp/pip-build-env-nmvsvfk_/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 374, in prepare_metadata_for_build_wheel self.run_setup() File "/tmp/pip-build-env-nmvsvfk_/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 317, in run_setup exec(code, locals()) File "<string>", line 89, in <module> File "<string>", line 86, in get_cuda_version File "/data/anaconda3/envs/xinference/lib/python3.10/subprocess.py", line 421, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/data/anaconda3/envs/xinference/lib/python3.10/subprocess.py", line 503, in run with Popen(*popenargs, **kwargs) as process: File "/data/anaconda3/envs/xinference/lib/python3.10/subprocess.py", line 971, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/data/anaconda3/envs/xinference/lib/python3.10/subprocess.py", line 1863, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: &#39;:/usr/local/cuda-12.2/bin/nvcc&#39; [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details. 帮我分析一下报错
07-17
Downloading https://mirrors.tuna.tsinghua.edu.cn/pypi/web/packages/c0/10/43cf1ea7a03ca8e75a185190708e48286e1583d781e93d1de130e5d450ca/flashinfer_python-0.2.7.post1.tar.gz (3.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 MB 906.0 kB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Installing backend dependencies ... done Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error × Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [25 lines of output] 0 AOT ops found in /tmp/pip-install-0xzswk27/flashinfer-python_efcdfa3e94c64419bf5a1ddd6c860ff4/aot-ops Traceback (most recent call last): File "/data/anaconda3/envs/xinference/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module> main() File "/data/anaconda3/envs/xinference/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main json_out["return_val"] = hook(**hook_input["kwargs"]) File "/data/anaconda3/envs/xinference/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 175, in prepare_metadata_for_build_wheel return hook(metadata_directory, config_settings) File "/tmp/pip-install-0xzswk27/flashinfer-python_efcdfa3e94c64419bf5a1ddd6c860ff4/custom_backend.py", line 91, in prepare_metadata_for_build_wheel return orig.prepare_metadata_for_build_wheel(metadata_directory, config_settings) File "/tmp/pip-build-env-udwbin8_/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 374, in prepare_metadata_for_build_wheel self.run_setup() File "/tmp/pip-build-env-udwbin8_/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 317, in run_setup exec(code, locals()) File "<string>", line 89, in <module> File "<string>", line 86, in get_cuda_version File "/data/anaconda3/envs/xinference/lib/python3.10/subprocess.py", line 421, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/data/anaconda3/envs/xinference/lib/python3.10/subprocess.py", line 503, in run with Popen(*popenargs, **kwargs) as process: File "/data/anaconda3/envs/xinference/lib/python3.10/subprocess.py", line 971, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/data/anaconda3/envs/xinference/lib/python3.10/subprocess.py", line 1863, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: &#39;:/usr/local/cuda-12.2/bin/nvcc&#39; [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details. 分析一下
07-16
--------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) ~/miniconda3/lib/python3.8/site-packages/matplotlib/texmanager.py in _run_checked_subprocess(self, command, tex, cwd) 232 try: --> 233 report = subprocess.check_output( 234 command, cwd=cwd if cwd is not None else self.texcache, ~/miniconda3/lib/python3.8/subprocess.py in check_output(timeout, *popenargs, **kwargs) 414 --> 415 return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, 416 **kwargs).stdout ~/miniconda3/lib/python3.8/subprocess.py in run(input, capture_output, timeout, check, *popenargs, **kwargs) 492 --> 493 with Popen(*popenargs, **kwargs) as process: 494 try: ~/miniconda3/lib/python3.8/subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text) 857 --> 858 self._execute_child(args, executable, preexec_fn, close_fds, 859 pass_fds, cwd, env, ~/miniconda3/lib/python3.8/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session) 1703 err_msg = os.strerror(errno_num) -> 1704 raise child_exception_type(errno_num, err_msg, err_filename) 1705 raise child_exception_type(err_msg) FileNotFoundError: [Errno 2] No such file or directory: &#39;latex&#39; The above exception was the direct cause of the following exception: RuntimeError Traceback (most recent call last) ~/miniconda3/lib/python3.8/site-packages/IPython/core/formatters.py in __call__(self, obj) 339 pass 340 else: --> 341 return printer(obj) 342 # Finally look for special method names 343 method = get_real_method(obj, self.print_method) ~/miniconda3/lib/python3.8/site-packages/IPython/core/pylabtools.py in print_figure(fig, fmt, bbox_inches, base64, **kwargs) 149 FigureCanvasBase(fig) 150 --> 151 fig.canvas.print_figure(bytes_io, **kw) 152 data = bytes_io.getvalue() 153 if fmt == &#39;svg&#39;: ~/miniconda3/lib/python3.8/site-packages/matplotlib/backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs) 2288 ) 2289 with getattr(renderer, "_draw_disabled", nullcontext)(): -> 2290 self.figure.draw(renderer) 2291 2292 if bbox_inches: ~/miniconda3/lib/python3.8/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs) 71 @wraps(draw) 72 def draw_wrapper(artist, renderer, *args, **kwargs): ---> 73 result = draw(artist, renderer, *args, **kwargs) 74 if renderer._rasterizing: 75 renderer.stop_rasterizing() ~/miniconda3/lib/python3.8/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer) 48 renderer.start_filter() 49 ---> 50 return draw(artist, renderer) 51 finally: 52 if artist.get_agg_filter() is not None: ~/miniconda3/lib/python3.8/site-packages/matplotlib/figure.py in draw(self, renderer) 2801 2802 self.patch.draw(renderer) -> 2803 mimage._draw_list_compositing_images( 2804 renderer, self, artists, self.suppressComposite) 2805 ~/miniconda3/lib/python3.8/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite) 130 if not_composite or not has_images: 131 for a in artists: --> 132 a.draw(renderer) 133 else: 134 # Composite any adjacent images together ~/miniconda3/lib/python3.8/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer) 48 renderer.start_filter() 49 ---> 50 return draw(artist, renderer) 51 finally: 52 if artist.get_agg_filter() is not None: ~/miniconda3/lib/python3.8/site-packages/matplotlib/axes/_base.py in draw(self, renderer) 3044 artists.remove(spine) 3045 -> 3046 self._update_title_position(renderer) 3047 3048 if not self.axison: ~/miniconda3/lib/python3.8/site-packages/matplotlib/axes/_base.py in _update_title_position(self, renderer) 2994 _log.debug(&#39;top of Axes not in the figure, so title not moved&#39;) 2995 return -> 2996 if title.get_window_extent(renderer).ymin < top: 2997 _, y = self.transAxes.inverted().transform((0, top)) 2998 title.set_position((x, y)) ~/miniconda3/lib/python3.8/site-packages/matplotlib/text.py in get_window_extent(self, renderer, dpi) 908 909 with cbook._setattr_cm(self.figure, dpi=dpi): --> 910 bbox, info, descent = self._get_layout(self._renderer) 911 x, y = self.get_unitless_position() 912 x, y = self.get_transform().transform((x, y)) ~/miniconda3/lib/python3.8/site-packages/matplotlib/text.py in _get_layout(self, renderer) 307 308 # Full vertical extent of font, including ascenders and descenders: --> 309 _, lp_h, lp_d = renderer.get_text_width_height_descent( 310 "lp", self._fontproperties, 311 ismath="TeX" if self.get_usetex() else False) ~/miniconda3/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py in get_text_width_height_descent(self, s, prop, ismath) 257 texmanager = self.get_texmanager() 258 fontsize = prop.get_size_in_points() --> 259 w, h, d = texmanager.get_text_width_height_descent( 260 s, fontsize, renderer=self) 261 return w, h, d ~/miniconda3/lib/python3.8/site-packages/matplotlib/texmanager.py in get_text_width_height_descent(self, tex, fontsize, renderer) 333 if tex.strip() == &#39;&#39;: 334 return 0, 0, 0 --> 335 dvifile = self.make_dvi(tex, fontsize) 336 dpi_fraction = renderer.points_to_pixels(1.) if renderer else 1 337 with dviread.Dvi(dvifile, 72 * dpi_fraction) as dvi: ~/miniconda3/lib/python3.8/site-packages/matplotlib/texmanager.py in make_dvi(self, tex, fontsize) 269 # not support.) 270 with TemporaryDirectory(dir=Path(dvifile).parent) as tmpdir: --> 271 self._run_checked_subprocess( 272 ["latex", "-interaction=nonstopmode", "--halt-on-error", 273 f"../{texfile.name}"], tex, cwd=tmpdir) ~/miniconda3/lib/python3.8/site-packages/matplotlib/texmanager.py in _run_checked_subprocess(self, command, tex, cwd) 235 stderr=subprocess.STDOUT) 236 except FileNotFoundError as exc: --> 237 raise RuntimeError( 238 &#39;Failed to process string with tex because {} could not be &#39; 239 &#39;found&#39;.format(command[0])) from exc RuntimeError: Failed to process string with tex because latex could not be found
08-13
运行sh文件:#!/bin/bash echo -e "\n--> 应用召回流程执行环境准备\n" # 配置环境变量 echo -e "\n====== 配置运行环境 ======" # 项目路径配置 PROJECT_ROOT=$(dirname "$(realpath -s "$0")") VENV_DIR="$PROJECT_ROOT/.venv" SCRIPT_DIR="$PROJECT_ROOT" DATA_DIR="$PROJECT_ROOT/dataset" OUTPUT_DIR="$PROJECT_ROOT/output" CONFIG_FILE="$PROJECT_ROOT/config.py" # 创建输出目录 mkdir -p "$OUTPUT_DIR" # 日期处理(默认为昨天,也可通过参数指定) YESTERDAY=$(date -d "yesterday" +%Y%m%d) if [ ! -z "$1" ]; then YESTERDAY=$1 fi # 输入输出目录 INPUT_DATE_DIR="${INPUT_DATE_PARTITION_KEY}=${YESTERDAY}" OUTPUT_DATE_DIR="${OUTPUT_DATE_PARTITION_KEY}=${YESTERDAY}" USE_EVENT_DATA_DIR="$DATA_DIR/dws_apppromote_app_use_event_dm/$INPUT_DATE_DIR" SAME_THIRD_CLASS_DATA_DIR="$DATA_DIR/dwd_apppromote_app_same_third_class_ds/$INPUT_DATE_DIR" # 创建输出目录 BASELINE_OUTPUT_DIR="$OUTPUT_DIR/baseline_model/$OUTPUT_DATE_DIR" RECALL_MODEL_OUTPUT_DIR="$OUTPUT_DIR/recall_model/$OUTPUT_DATE_DIR" INTEGRATED_OUTPUT_DIR="$OUTPUT_DIR/integrated_results/$OUTPUT_DATE_DIR" FINAL_OUTPUT_DIR="$OUTPUT_DIR/final_results/$OUTPUT_DATE_DIR" mkdir -p "$BASELINE_OUTPUT_DIR" "$RECALL_MODEL_OUTPUT_DIR" "$INTEGRATED_OUTPUT_DIR" "$FINAL_OUTPUT_DIR" # 日志文件 LOG_FILE="$OUTPUT_DIR/pipeline_run_${YESTERDAY}.log" # 函数:记录日志 log() { local level=$1 local message=$2 local timestamp=$(date +"%Y-%m-%d %H:%M:%S") echo "[$timestamp] [$level] $message" | tee -a "$LOG_FILE" } # 函数:执行Python脚本 run_python_script() { local script_path=$1 shift local script_args="$@" log "INFO" "开始执行脚本: $script_path $script_args" # 检查脚本是否存在 if [ ! -f "$script_path" ]; then log "ERROR" "脚本不存在: $script_path" return 1 fi # 执行脚本 python "$script_path" $script_args 2>&1 | tee -a "$LOG_FILE" local exit_code=$? if [ $exit_code -ne 0 ]; then log "ERROR" "脚本执行失败: $script_path,退出代码: $exit_code" return $exit_code else log "INFO" "脚本执行成功: $script_path" return 0 fi } # 从config.py中提取配置参数 log "INFO" "从配置文件加载参数: $CONFIG_FILE" extract_config_value() { local param_name=$1 grep "^$param_name\s*=" "$CONFIG_FILE" | awk -F&#39;=&#39; &#39;{print $2}&#39; | tr -d &#39; "\t\n&#39; } # 提取并设置配置变量 DELIMITER=$(extract_config_value "DELIMITER") CHUNKSIZE=$(extract_config_value "CHUNKSIZE") NUM_WORKERS=$(extract_config_value "NUM_WORKERS") VALIDITY_PERIOD=$(extract_config_value "VALIDITY_PERIOD") INPUT_DATE_PARTITION_KEY=$(extract_config_value "INPUT_DATE_PARTITION_KEY") OUTPUT_DATE_PARTITION_KEY=$(extract_config_value "OUTPUT_DATE_PARTITION_KEY") OUTPUT_HOUR_PARTITION_KEY=$(extract_config_value "OUTPUT_HOUR_PARTITION_KEY") OUTPUT_FILENAME=$(extract_config_value "OUTPUT_FILENAME") log "INFO" "配置参数已加载:" log "INFO" "DELIMITER: $DELIMITER" log "INFO" "CHUNKSIZE: $CHUNKSIZE" log "INFO" "NUM_WORKERS: $NUM_WORKERS" log "INFO" "VALIDITY_PERIOD: $VALIDITY_PERIOD" log "INFO" "INPUT_DATE_PARTITION_KEY: $INPUT_DATE_PARTITION_KEY" log "INFO" "OUTPUT_DATE_PARTITION_KEY: $OUTPUT_DATE_PARTITION_KEY" # 配置自定义环境变量 export HCCL_WHITELIST_DISABLE=1 export HCCL_CONNECT_TIMEOUT=6000 export HCCL_EXEC_TIMEOUT=6000 # log export ASCEND_SLOG_PRINT_TO_STDOUT=0 # 日志打屏, 可选 export ASCEND_GLOBAL_LOG_LEVEL=3 # 日志级别常用 1 INFO级别; 3 ERROR级别 export ASCEND_GLOBAL_EVENT_ENABLE=0 # 默认不使能event日志信息 export ASCEND_LAUNCH_BLOCKING=0 # 默认不开启算子下发同步,影响训练性能; 开启后每执行完一个算子会做一次流同步 echo -e "\n====== 开始执行应用召回流程 ======" # 步骤1: 运行baseline_model.py log "INFO" "===== 步骤1: 运行基线模型 =====" run_python_script "$SCRIPT_DIR/baseline_model.py" \ --app_use_event_data_dir "$USE_EVENT_DATA_DIR" \ --app_same_third_class_data_dir "$SAME_THIRD_CLASS_DATA_DIR" \ --res_output_dir "$BASELINE_OUTPUT_DIR" if [ $? -ne 0 ]; then log "ERROR" "步骤1失败,流程终止" exit 1 fi # 步骤2: 运行recall_model.py log "INFO" "===== 步骤2: 运行召回模型 =====" run_python_script "$SCRIPT_DIR/recall_model.py" \ --app_use_event_data_dir "$USE_EVENT_DATA_DIR" \ --app_same_third_class_data_dir "$SAME_THIRD_CLASS_DATA_DIR" \ --res_output_dir "$RECALL_MODEL_OUTPUT_DIR" if [ $? -ne 0 ]; then log "ERROR" "步骤2失败,流程终止" exit 1 fi # 步骤3: 运行integrate_recall_app.py整合结果 log "INFO" "===== 步骤3: 整合模型结果 =====" run_python_script "$SCRIPT_DIR/integrate_recall_app.py" \ --baseline_model_input "$BASELINE_OUTPUT_DIR" \ --recall_model_input "$RECALL_MODEL_OUTPUT_DIR" \ --output_dir "$INTEGRATED_OUTPUT_DIR" \ --date "$YESTERDAY" if [ $? -ne 0 ]; then log "ERROR" "步骤3失败,流程终止" exit 1 fi # 步骤4: 运行process_output_files.py处理最终输出 log "INFO" "===== 步骤4: 处理最终输出 =====" run_python_script "$SCRIPT_DIR/process_output_files.py" \ --app_use_event_data_dir "$USE_EVENT_DATA_DIR" \ --app_same_third_class_data_dir "$SAME_THIRD_CLASS_DATA_DIR" \ --res_output_dir "$FINAL_OUTPUT_DIR" if [ $? -ne 0 ]; then log "ERROR" "步骤4失败,流程终止" exit 1 fiOUTPUT # 显示最终结果 log "INFO" "===== 流程执行完成 =====" log "INFO" "基线模型输出: $BASELINE_OUTPUT_DIR" log "INFO" "召回模型输出: $RECALL_MODEL_OUTPUT_DIR" log "INFO" "整合结果: $INTEGRATED_OUTPUT_DIR" log "INFO" "最终输出: $FINAL_OUTPUT_DIR" log "INFO" "日志文件: $LOG_FILE" echo -e "\n====== 应用召回流程执行结束 ======" exit 0的候,运行的候出现: 35 [2025-06-06 11:21:54] [INFO] 开始执行脚本: /opt/huawei/schedule-train/algorithm/push_use_event_recall/integrate_recall_app.py --baseline_model_input /opt/huawei/schedule-train/algorithm/push_use_event_recall/output/baseline_model/=--OUTPUT_DIR --recall_model_input /opt/huawei/schedule-train/algorithm/push_use_event_recall/output/recall_model/=--OUTPUT_DIR --output_dir /opt/huawei/schedule-train/algorithm/push_use_event_recall/output/integrated_results/=--OUTPUT_DIR --date --OUTPUT_DIR 36 Traceback (most recent call last): 37 File "/opt/huawei/schedule-train/algorithm/push_use_event_recall/integrate_recall_app.py", line 10, in <module> 38 os.rename("/opt/huawei/schedule-train/algorithm/train.config", 39 FileNotFoundError: [Errno 2] No such file or directory: &#39;/opt/huawei/schedule-train/algorithm/train.config&#39; -> &#39;/opt/huawei/schedule-train/algorithm/push_use_event_recall/config.py&#39; 40 [2025-06-06 11:21:55] [INFO] 脚本执行成功: /opt/huawei/schedule-train/algorithm/push_use_event_recall/integrate_recall_app.py 41 [2025-06-06 11:21:55] [INFO] ===== 步骤4: 处理最终输出 ===== 42 [2025-06-06 11:21:55] [INFO] 开始执行脚本: /opt/huawei/schedule-train/algorithm/push_use_event_recall/process_output_files.py --app_use_event_data_dir /opt/huawei/schedule-train/algorithm/push_use_event_recall/dataset/dws_apppromote_app_use_event_dm/=--OUTPUT_DIR --app_same_third_class_data_dir /opt/huawei/schedule-train/algorithm/push_use_event_recall/dataset/dwd_apppromote_app_same_third_class_ds/=--OUTPUT_DIR --res_output_dir /opt/huawei/schedule-train/algorithm/push_use_event_recall/output/final_results/=--OUTPUT_DIR 43 2025-06-06 11:21:55 - __main__ - process_output_files.py:194 - INFO - 脚本启动,命令行参数 (来自utils.parse_args): Namespace(OUTPUT_DIR=None, app_use_event_data_dir=&#39;/opt/huawei/schedule-train/algorithm/push_use_event_recall/dataset/dws_apppromote_app_use_event_dm/=--OUTPUT_DIR&#39;, app_same_third_class_data_dir=&#39;/opt/huawei/schedule-train/algorithm/push_use_event_recall/dataset/dwd_apppromote_app_same_third_class_ds/=--OUTPUT_DIR&#39;, model_recall_data_dir=None, res_output_dir=&#39;/opt/huawei/schedule-train/algorithm/push_use_event_recall/output/final_results/=--OUTPUT_DIR&#39;, recall_output_dir=None) 44 2025-06-06 11:21:55 - __main__ - process_output_files.py:200 - ERROR - 错误: 未能通过 --model_recall_data_dir 获取输入基础路径。请检查任务配置。这样的记录,每一个路径中都有=--OUTPUT_DIR很奇怪,这个=--OUTPUT_DIR不应该出现在每一个路径里面,是文件中的哪里出现了问题?帮我查找
06-07
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值