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

标签 python package setup.py

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

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

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

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

更新:自从我提出问题 PyPA发表 these cool docs on the topic .

最佳答案

(很棒的)Click 包的文档 suggest a few reasons使用入口点而不是脚本,包括

  1. 跨平台兼容性和
  2. 避免让解释器将 __name__ 分配给 __main__,这可能导致代码被导入两次(如果另一个模块导入您的脚本)

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

关于python - setup.py 中 entry_points/console_scripts 和脚本之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18787036/

相关文章:

java - 包名称与文件夹结构不同,但 Java 代码仍可编译

Python/Linux - 以非 root 用户身份手动安装 httplib2

python - 是否可以创建 PyQt Web 应用程序?

python - celery 使用错误的 python 版本

package - VHDL语法错误靠近 “procedure”。模式inout的正式crcreg必须具有关联的实际值

python - 如何使用 setup.py 安装动态库?

python - setup.py 安装中的哈希检查需要

python - Cython:访问 CPython 对象的私有(private) C 成员

python - 查找实函数的属性

python - 如何使用 find_packages() 打包子目录中的所有文件