如何打包命令行Python脚本

36 投票
5 回答
13222 浏览
提问于 2025-04-15 12:51

我写了一个Python脚本,打算在命令行中使用。请问我该如何打包它呢?这是我第一次做Python包,我看了一些关于setuptools的资料,但还是不太确定最好的做法是什么。


解决方案

最后我使用了setup.py,并配置了一些关键设置,具体如下:

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

这里有一个不错的示例,可以参考一下。

5 个回答

3

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

在那篇文章里,我使用了目前推荐的方法(比如twine、纯粹的setuptools而不是distutils,还有在entry_points字典中的console_scripts键等等),这些方法适用于Python 2和3。

6

与其使用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

@Zach,根据你在评论中对@soulmerge回答的澄清,看来你需要按照关于distutils的说明来写一个setup.py。特别是这里是关于如何在pypi上注册的说明,而这里则是关于注册后如何上传到pypi的说明。如果你需要一些额外的功能,超出distutils本身提供的内容,你可能还需要添加setuptools,easy_install就是其中的一部分,具体的说明可以在这里找到。

撰写回答