<tfoot id='Gf6Wc'></tfoot>

  1. <i id='Gf6Wc'><tr id='Gf6Wc'><dt id='Gf6Wc'><q id='Gf6Wc'><span id='Gf6Wc'><b id='Gf6Wc'><form id='Gf6Wc'><ins id='Gf6Wc'></ins><ul id='Gf6Wc'></ul><sub id='Gf6Wc'></sub></form><legend id='Gf6Wc'></legend><bdo id='Gf6Wc'><pre id='Gf6Wc'><center id='Gf6Wc'></center></pre></bdo></b><th id='Gf6Wc'></th></span></q></dt></tr></i><div id='Gf6Wc'><tfoot id='Gf6Wc'></tfoot><dl id='Gf6Wc'><fieldset id='Gf6Wc'></fieldset></dl></div>
    • <bdo id='Gf6Wc'></bdo><ul id='Gf6Wc'></ul>

    <small id='Gf6Wc'></small><noframes id='Gf6Wc'>

    1. <legend id='Gf6Wc'><style id='Gf6Wc'><dir id='Gf6Wc'><q id='Gf6Wc'></q></dir></style></legend>

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

      时间:2023-09-14
      <i id='4kVmS'><tr id='4kVmS'><dt id='4kVmS'><q id='4kVmS'><span id='4kVmS'><b id='4kVmS'><form id='4kVmS'><ins id='4kVmS'></ins><ul id='4kVmS'></ul><sub id='4kVmS'></sub></form><legend id='4kVmS'></legend><bdo id='4kVmS'><pre id='4kVmS'><center id='4kVmS'></center></pre></bdo></b><th id='4kVmS'></th></span></q></dt></tr></i><div id='4kVmS'><tfoot id='4kVmS'></tfoot><dl id='4kVmS'><fieldset id='4kVmS'></fieldset></dl></div>

              <tfoot id='4kVmS'></tfoot>
              <legend id='4kVmS'><style id='4kVmS'><dir id='4kVmS'><q id='4kVmS'></q></dir></style></legend>
                <tbody id='4kVmS'></tbody>

              <small id='4kVmS'></small><noframes id='4kVmS'>

                <bdo id='4kVmS'></bdo><ul id='4kVmS'></ul>

                本文介绍了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 和脚本之间的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:如何在 Python 中列出所有已安装的包及其版本? 下一篇:查看何时使用 pip 安装/更新软件包

                相关文章

                最新文章

              • <small id='COruf'></small><noframes id='COruf'>

                  <tfoot id='COruf'></tfoot><legend id='COruf'><style id='COruf'><dir id='COruf'><q id='COruf'></q></dir></style></legend>

                    <bdo id='COruf'></bdo><ul id='COruf'></ul>

                    <i id='COruf'><tr id='COruf'><dt id='COruf'><q id='COruf'><span id='COruf'><b id='COruf'><form id='COruf'><ins id='COruf'></ins><ul id='COruf'></ul><sub id='COruf'></sub></form><legend id='COruf'></legend><bdo id='COruf'><pre id='COruf'><center id='COruf'></center></pre></bdo></b><th id='COruf'></th></span></q></dt></tr></i><div id='COruf'><tfoot id='COruf'></tfoot><dl id='COruf'><fieldset id='COruf'></fieldset></dl></div>