如何打包命令行Python脚本

时间:2009-07-12 21:55:09

标签: python command-line packaging

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


解决方案

我最终使用setup.py使用了下面提到的关键配置:

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

在上下文中,这是一个很好的example

5 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:3)

@Zach,鉴于您对@ soulmerge的回答的评论已经澄清,看起来您需要的是根据有关distutils - here的说明编写setup.py是你在pypi上注册的方式,here注册后如何上传到pypi - 可能(如果你需要一些额外的功能,就像distutils自己提供的那样)添加setuptools,其中{{3} 1}}是一部分,通过说明here

答案 2 :(得分:2)

包装是什么意思?如果要在已安装python的盒子上运行单个脚本,则只需将shebang放入文件的第一行即可。

如果你想在Windows下或在没有python的盒子上执行它,你需要一些外部的东西,比如pyinstaller

如果您的问题是关于将配置/数据文件放在何处,那么就我所知,您需要以平台为依据(例如写入registryhome folder)。

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

对于那些初学者的Python包装,我建议您阅读Python Packaging Tutorial

关于教程的注意事项:

  

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