Difference between entry_points/console_scripts and scripts in setup.py?(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
- 跨平台兼容性和
- 避免让解释器将
__name__分配给__main__,这可能导致代码被导入两次(如果另一个模块导入您的脚本)
- cross-platform compatibility and
- 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 和脚本之间的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:setup.py 中 entry_points/console_scripts 和脚本之间的区别?
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
