Python 可以使用pip同时安装模块和包装器脚本吗?

Python 可以使用pip同时安装模块和包装器脚本吗?,python,pip,publish,Python,Pip,Publish,到目前为止,我通过以下方式与人们共享了我的Python程序: 编写一个带有函数的模块 编写一个包装器脚本my_script,它使用此模块和其他包,如argparse 在PyPI上发布my_模块 将软件推送到Github,并提供一个自述文件,说明如何安装该软件: 使用pip安装我的模块安装模块 从Github下载my_脚本,并将其移动到PATH变量所指向的位置,或通过python my_脚本 这种方式似乎不错,但我想知道是否有可能一次性安装,也就是说,pip install my_softwa

到目前为止,我通过以下方式与人们共享了我的Python程序:

  • 编写一个带有函数的模块
  • 编写一个包装器脚本
    my_script
    ,它使用此模块和其他包,如
    argparse
  • 在PyPI上发布my_模块
  • 将软件推送到Github,并提供一个自述文件,说明如何安装该软件:
    • 使用
      pip安装我的模块安装模块
    • 从Github下载
      my_脚本
      ,并将其移动到
      PATH
      变量所指向的位置,或通过
      python my_脚本
  • 这种方式似乎不错,但我想知道是否有可能一次性安装,也就是说,
    pip install my_software
    ,它可以一次安装所有东西。此外,在安装后只需键入
    my_script
    就可以调用包装器脚本,这一点很重要


    发布此类软件的最佳方法是什么?

    来自Setuptools文档:

    [在distutils中指定脚本过去很难…]setuptools修复 通过使用自动生成脚本来解决所有这些问题 正确的扩展名,在Windows上它甚至会创建一个.exe文件 这样用户就不必更改其PathText设置。通往 使用此功能可以在安装脚本中定义 指示生成的脚本应导入并运行的函数。对于 例如,创建两个名为foo和bar的控制台脚本,以及一个GUI 名为baz的脚本,您可以执行以下操作:


    请注意,如果脚本是与setuptools没有直接关系的构建过程的结果(您希望在pypi上提供一个包,但希望使用cmake工具链进行构建),则需要覆盖
    setuptools.command中的
    install\u scripts
    类调用
    setup()
    中的参数在这里很有用。@TylerGubala你能把它放在一个答案中吗,也许用一个例子来扩展一下?如果您不想从头开始编写一个示例,那么这个示例可能已经足够好了。
    setup(
        # other arguments here...
        entry_points={
            'console_scripts': [
                'foo = my_package.some_module:main_func',
                'bar = other_module:some_func',
            ],
            'gui_scripts': [
                'baz = my_package_gui:start_func',
            ]
        }
    )