【问题标题】:How to package a command line Python script如何打包命令行 Python 脚本
【发布时间】:2010-11-10 03:55:17
【问题描述】:

我创建了一个旨在从命令行使用的 python 脚本。我该如何包装它?这是我的第一个 python 包,我已经阅读了一些关于 setuptools 的信息,但我仍然不确定最好的方法。


解决方案

我最终使用了setup.py,其关键配置如下:

setup(
....
    entry_points="""
[console_scripts]
mycommand = mypackage.mymodule:main
""",
....
)

这是一个很好的 example 上下文。

【问题讨论】:

  • 您将在哪个平台上部署?

标签: python command-line packaging


【解决方案1】:

你说的包装是什么意思?如果它是在已经安装了 python 的机器上运行的单个脚本,您只需将 shebang 放入文件的第一行即可。

但是,如果您希望它在 Windows 下或在没有 python 的机器上执行,您将需要一些外部的东西,例如 pyinstaller

如果您的问题是关于将配置/数据文件放在哪里,据我所知,您需要依赖于平台工作(例如写入registryhome folder)。

【讨论】:

  • 它由两个python文件组成。例如,我想将其打包以在 PiPy 上分发,并使用 easy_install 进行安装。
【解决方案2】:

@Zach,鉴于您在评论中对@soulmerge 的回答进行了澄清,看起来您需要按照有关distutils 的说明编写一个setup.py - 特别是here 是您如何注册在 pypi 上,here 关于如何在注册后上传到 pypi —— 并且可能(如果你需要一些额外的功能 wrt distutils 自己提供的东西)添加 setuptools,其中easy_install 是一部分,通过指令here.

【讨论】:

  • 幸运的是,这个答案有点过时了。现在一个很好的信息来源是packaging.python.org/en/latest,以及我在回答中指出的那篇文章。
【解决方案3】:

而不是使用 setuptools 非标准的方式进行,可以直接依赖distutils setup 的功能,使用scripts 参数,如下所述:http://docs.python.org/distutils/setupscript.html#installing-scripts

from distutils import setup
setup(
    ...,
    scripts=['path/to/your/script',],
    ...
)

它允许您保持兼容 a) 与所有 python 版本和 b) 不必依赖 setuptools 作为外部依赖项。

【讨论】:

    【解决方案4】:

    上个月,我写了一篇文章来准确回答你的问题。你可以在这里找到它:http://gehrcke.de/2014/02/distributing-a-python-command-line-application/

    在那里,我只使用当前推荐的方法(twine、纯 setuptools 而不是 distutils、entry_points 字典中的 console_scripts 键,...),它们适用于 Python 2 和 3。

    【讨论】:

      【解决方案5】:

      对于Python打包的初学者,我建议通过Python Packaging Tutorial

      关于教程的注意事项:

      目前,本文档仅关注 Python 2.x,可能不适用于针对 Python 3.x 的包

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多