You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自定义模块导入报错:ModuleNotFoundError及多进程问题

问题:Python自定义模块导入与多进程启动报错

初始问题:ModuleNotFoundError

正在进行基础Python开发,使用他人编写的自定义模块时遇到报错,无法定位问题。文件夹结构包含test文件夹,其中有testing.py文件,代码如下:

from util import get_data, plot_data
fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x)

执行命令python testing.py时触发ModuleNotFoundError。已检查路径,确认路径无问题,且当前已激活conda环境。

后续报错:多进程启动方法错误

按照建议改为相对导入后,跳过了模块找不到的错误,但出现新的报错信息:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\envs\ml4t\lib\multiprocessing\context.py", line 190, in get_context
    ctx = _concrete_contexts[method]
KeyError: 'fork'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "grade_analysis.py", line 21, in <module>
    from grading.grading import (

  File "E:\_Repo\GT\CS7646\mls4tsp23\grading\grading.py", line 15, in <module>
    multiprocessing.set_start_method('fork')

  File "C:\ProgramData\Anaconda3\envs\ml4t\lib\multiprocessing\context.py", line 246, in set_start_method
    self._actual_context = self.get_context(method)
  File "C:\ProgramData\Anaconda3\envs\ml4t\lib\multiprocessing\context.py", line 238, in get_context
    return super().get_context(method)
  File "C:\ProgramData\Anaconda3\envs\ml4t\lib\multiprocessing\context.py", line 192, in get_context
    raise ValueError('cannot find context for %r' % method)
ValueError: cannot find context for 'fork'

解决方案

处理ModuleNotFoundError

  1. 确认util模块位置并调整导入方式
    • 若util.py与test文件夹同级,改用相对导入:
      from ..util import get_data, plot_data
      
      此时需将test作为包运行,执行命令改为python -m test.testing,不能直接运行testing.py。
    • 或者手动添加模块路径:
      在testing.py开头加入以下代码,将util所在目录加入Python搜索路径:
      import sys
      from pathlib import Path
      sys.path.append(str(Path(__file__).parent.parent))
      from util import get_data, plot_data
      

处理多进程fork方法报错

Windows系统不支持fork启动方法,修改grading.py中的代码:
将multiprocessing.set_start_method('fork')替换为:

import multiprocessing
if __name__ == '__main__':
    # 适配Windows系统,使用spawn启动方法
    multiprocessing.set_start_method('spawn')

或者直接移除set_start_method的显式设置,让Python自动根据系统选择默认启动方法。

内容的提问来源于stack exchange,提问作者M.R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:50:47