setup.py 中 entry_points/console_scripts 和脚本之间的区别?

Difference between entry_points/console_scripts and scripts in setup.py?(setup.py 中 entry_points/console_scripts 和脚本之间的区别?)
本文介绍了setup.py 中 entry_points/console_scripts 和脚本之间的区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

通过 setup.py 将 Python 控制台脚本安装到我的路径中基本上有两种方法:

There are basically two ways to install Python console scripts to my path by setup.py:

setup(
    ...
    entry_points = {
        'console_scripts': [
            'foo = package.module:func',
        ],
    }
)

setup(
    ...
    scripts = [
        'scripts/myscript.sh'
    ]
)

有什么区别?我看到第一种方法允许我为我的脚本选择好的、特定的名称,但是还有其他区别吗?不同的原始用途、兼容性(setuptools、distutils、...?)、用法、...?我很困惑,一个很好的详细回复可以帮助我(可能还有其他人)正确理解这一切.

What are the differences? I see the first approach allows me to choose nice, specific name for my script, but are there any other differences? Different original purposes, compatibility (setuptools, distutils, ...?), usage, ...? I am quite confused and a nice elaborated reply could help me (and probably also others) to properly understand all this.

更新:自从我提出问题 PyPA 发布 这些关于该主题的酷文档.

Update: Since I asked the question PyPA published these cool docs on the topic.

推荐答案

(很棒的)Click 包的文档 建议几个理由 使用入口点而不是脚本,包括

The docs for the (awesome) Click package suggest a few reasons to use entry points instead of scripts, including

  1. 跨平台兼容性和
  2. 避免让解释器将 __name__ 分配给 __main__,这可能导致代码被导入两次(如果另一个模块导入您的脚本)
  1. cross-platform compatibility and
  2. avoiding having the interpreter assign __name__ to __main__, which could cause code to be imported twice (if another module imports your script)

Click 是实现函数的好方法,可用作 entry_points,顺便说一句.

Click is a nice way to implement functions for use as entry_points, btw.

这篇关于setup.py 中 entry_points/console_scripts 和脚本之间的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)
Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)
Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)
Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)
Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)
Grouping pandas DataFrame by 10 minute intervals(按10分钟间隔对 pandas 数据帧进行分组)