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

如何从命令行运行Python .whl包的主函数或端点?

解决Python .whl文件运行时找不到__main__模块的问题

问题根源

直接用python mypack.whl执行时,Python会尝试将whl作为可执行zip包加载顶层的__main__.py,但你的配置是通过自定义entry_point分组(group_1)定义的入口,这种方式无法被直接运行whl的逻辑识别;同时如果包结构或打包配置有问题,也会导致找不到模块。

可行解决方案

方案1:通过pip run调用自定义entry_point

无需安装包,直接用pip调用你配置的入口点:

pip run --no-deps -m mypack run

参数说明:

  • --no-deps:避免自动安装依赖(按需使用)
  • -m mypack:指定目标包名
  • run:你在group_1里定义的入口名称

方案2:改用标准console_scripts入口点(推荐)

将entry_points改为Python标准的console_scripts分组,更符合生态规范,使用更便捷:

# setup.py 示例配置
entry_points={
    'console_scripts': [
        'mypack-start=__main__:main'
    ]
}

重新打包后:

  • 安装包后,直接在命令行输入mypack-start即可运行main()
  • 无需安装的话,用pip run --no-deps mypack-start执行

方案3:让whl支持直接用python运行

如果坚持要通过python mypack.whl执行,需满足两个条件:

  1. 包结构正确:确保__main__.py在包的顶层目录,示例结构:
    mypack/
        __init__.py
        __main__.py
    setup.py
    
  2. 打包时设置zip_safe=False:在setup.py中添加配置,避免zip包导入限制:
    setup(
        # 其他配置项...
        zip_safe=False
    )
    

重新打包后再尝试python mypack.whl。

内容的提问来源于stack exchange,提问作者valeriopa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:12:49