Python脚本命令行启动报AttributeError: 'module'无set_start_method属性求助
搞定
AttributeError: 'module' object has no attribute 'set_start_method'的几种方法 这个报错其实很好定位,我帮你拆解下问题和解决方案:
一、先查最常见的原因:命令行Python版本不对
multiprocessing.set_start_method()这个方法是Python 3.4才新增的,你脚本开头指定了要用Python3.5,但命令行执行时可能用的是更低版本的Python(比如Python2或者3.3及以下)。
先确认当前命令行用的Python版本:
跑一下这个命令看看:python --version如果显示是Python 2.x或者3.3及以下,那问题就出在这了。
用指定版本的Python跑脚本:
别用python,直接用脚本开头指定的python3.5来执行:python3.5 field_basket_design_uwr.py如果你的系统里
python3指向的是3.5及以上版本,也可以直接用python3代替。
二、给代码加版本兼容(如果需要适配多环境)
如果你的脚本可能在不同版本的Python环境运行,或者不确定用户的Python版本,可以把原来的mp.set_start_method('spawn')替换成下面的兼容代码:
import multiprocessing as mp # 先检查当前Python版本支持这个方法不 if hasattr(mp, 'set_start_method'): mp.set_start_method('spawn') else: # 低版本Python直接跳过,Windows环境低版本默认启动方式就是spawn,无需额外操作 pass
另外还要注意:如果你的脚本在调用set_start_method之前,已经创建了Pool、Process这类多进程对象,也可能出问题,但你的报错是找不到方法,所以优先考虑版本问题。
三、检查是不是导入了错的模块
最后再确认下,你脚本里的mp是不是真的导入了标准库的multiprocessing:
确保导入语句是:
import multiprocessing as mp
别让自己写的同名文件(比如自己也建了个multiprocessing.py)覆盖了标准库的模块,不然也会找不到这个方法。
内容的提问来源于stack exchange,提问作者floppy_molly
相关产品推荐
相关产品推荐

