调用setuptools.setup报DistutilsArgError: no commands supplied如何解决
问题排查与解决方案
错误原因
你错误地将包安装配置的setup代码和业务运行代码放在同一个脚本中直接执行:
- setuptools的
setup()函数用于Python包的打包、安装等管理操作,运行时必须接收命令行参数(如install、build等)才能正常执行,直接运行脚本未传递对应参数,因此触发了参数缺失的报错。 - Python第三方包需要先完成安装后才能在脚本中导入使用,将
setup代码和业务导入代码写在同一个脚本直接运行的写法,不符合包的安装、使用逻辑。
修复方案
- 第一步:将代码中
setup相关的片段单独提取,存为setup.py文件,放置在marlgrid源码的根目录下。打开终端切换到该根目录,执行命令pip install .完成marlgrid包的安装。 - 第二步:新建独立的Python业务脚本,仅写入你需要运行的业务代码即可,示例如下:
import numpy as np import marlgrid from marlgrid.rendering import InteractivePlayerWindow from marlgrid.agents import GridAgentInterface from marlgrid.envs import env_from_config
- 第三步:直接运行该业务脚本,即可正常导入marlgrid相关模块,不会再触发setup相关报错。
内容的提问来源于stack exchange,提问作者Samuele Bolotta
相关产品推荐
相关产品推荐

