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

为pip安装的Python项目创建命令别名的最简方案及Poetry支持情况

为python -m myproject创建命令别名的最简方式及Poetry实现方法

最简方式:通过包配置添加命令入口

不管是用pip从PyPI安装还是本地安装,最简的方式是在你的Python包配置中添加命令行入口点,安装后会自动生成系统可识别的命令(比如myproject),直接替代python -m myproject。

具体配置分两种常见情况:

  • 若使用PEP 621标准的pyproject.toml(推荐):
    在[project]块下添加:

    [project.scripts]
    myproject = "myproject.__main__:main"
    

    需确保myproject/__main__.py中有main()函数作为入口——如果原文件是直接执行代码,只需把核心逻辑封装到main()里,再在文件末尾加if __name__ == '__main__': main()即可。

  • 若使用传统的setup.py:
    在setup()函数中添加entry_points参数:

    from setuptools import setup
    
    setup(
        name="myproject",
        # 其他配置项...
        entry_points={
            "console_scripts": [
                "myproject = myproject.__main__:main",
            ]
        }
    )
    

配置完成后重新安装包(pip install .或从PyPI更新),就能直接在终端输入myproject替代python -m myproject。

Poetry是否支持实现?

完全可以。Poetry通过pyproject.toml中的[tool.poetry.scripts]块配置命令行入口,逻辑一致:

在Poetry项目的pyproject.toml中添加:

[tool.poetry.scripts]
myproject = "myproject.__main__:main"

执行poetry install或poetry build后,无论是使用Poetry虚拟环境还是全局安装,都能直接用myproject命令启动程序。

补充:如果__main__.py没有单独的main()函数,建议封装成函数避免直接执行代码的潜在问题;若要保留原有直接执行逻辑,可添加简单的包装函数,示例如下:

# myproject/__main__.py
def main():
    # 原执行代码
    print("启动myproject...")

if __name__ == '__main__':
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:45:32