35

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


解决方案

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

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

这是上下文中的一个很好的例子

4

5 回答 5

5

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

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

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

于 2011-08-15T12:46:26.520 回答
4

@Zach,鉴于您在评论中对@soulmerge 的回答进行了澄清,看来您需要按照有关distutils的说明编写 setup.py ——尤其是您在 pypi 上注册的方式,以及如何在此处注册注册后上传到 pypi - 并且可能(如果您需要 distutils 自己提供的一些额外功能)通过此处的说明添加 setuptools,这是其中的一部分。easy_install

于 2009-07-13T02:38:15.720 回答
2

你说的包装是什么意思?如果它是在一个已经安装了 python 的盒子上运行的单个脚本,你只需要在文件的第一行放一个shebang就可以了。

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

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

于 2009-07-12T22:19:30.383 回答
2

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

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

于 2014-03-16T17:12:51.080 回答
0

对于 Python 打包的初学者,我建议阅读这个Python 打包教程

关于教程的注意事项:

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

于 2015-08-14T09:07:31.877 回答