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

如何让pip安装的Python模块无需添加-m参数即可直接调用

解决方案

完全可以实现该需求,你只需要在Python包的打包配置中声明控制台入口点,pip安装时会自动生成对应全局可执行命令,不需要用户手动加python -m前缀,也不需要你手动处理脚本后缀、shebang行等适配操作,pip会自动适配不同操作系统生成对应可执行文件。

实现步骤

1. 项目结构参考

你可以参考如下最简项目结构组织你的代码:

hello-project/
├── pyproject.toml  # 打包配置文件(主流方案)
└── hello/
    ├── __init__.py
    └── main.py     # 业务代码入口

你的hello/main.py示例内容如下:

def main():
    # 这里写你的工具核心逻辑
    print("Hello World!")

if __name__ == "__main__":
    main()

2. 配置打包入口

这里提供两种常用配置方案,选择其中一种即可:

方案1:使用pyproject.toml(当前Python官方推荐的打包配置方式)

在pyproject.toml中添加如下配置:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "hello-tool" # 你的包名,需保证PyPI上唯一
version = "0.1.0"
authors = [
  { name="你的名称", email="你的邮箱" }
]
description = "命令行hello工具"
requires-python = ">=3.7"

# 核心配置:声明可执行命令映射
[project.scripts]
# 等号左边是用户安装后调用的命令名,右边是「包名.模块名:入口函数名」
hello = "hello.main:main"

方案2:使用setup.py(兼容旧版打包逻辑)

如果你的项目还在使用setup.py做打包配置,添加entry_points字段即可:

from setuptools import setup, find_packages

setup(
    name="hello-tool",
    version="0.1.0",
    packages=find_packages(),
    entry_points={
        'console_scripts': [
            'hello = hello.main:main',
        ]
    },
)

3. 打包发布与使用

  • 本地安装build打包工具:pip install build twine
  • 执行打包命令:python -m build,执行完成后会在项目根目录生成dist文件夹
  • 上传到PyPI:twine upload dist/*
  • 用户执行pip install hello-tool安装后,直接在终端输入hello即可运行工具

注意事项

  • 如果用户在虚拟环境中安装该工具,命令仅在虚拟环境激活时可用;全局安装的话所有用户都可以全局调用
  • 命名命令时不要和系统已有的内置命令重名,避免冲突
  • 该配置会自动适配Windows、macOS、Linux等不同操作系统,无需额外做跨平台适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:45:01