【问题标题】:Why does setuptools not create my entry points?为什么 setuptools 不创建我的入口点?
【发布时间】:2014-03-07 17:43:30
【问题描述】:

我的项目目录结构如下:

clc
 |-clc
 |  |-__init__.py
 |  |-clc.py
 |  |-main.py
 |-setup.py

main.py 看起来像这样:

def main():
    print "it works!"

setup.py:

config = {
    ...
    'entry_points':
        'clc_scripts': ['clc = clc.main:main']
    }
}
setup(**config)

当我运行python setup.py build 时,我会得到以下结果:

running build
running build_py
creating build
creating build/lib
creating build/lib/clc
copying clc/__init__.py -> build/lib/clc
copying clc/clc.py -> build/lib/clc
copying clc/main.py -> build/lib/clc

没有创建bin 文件夹,即使我指定了一个入口点。它确实创建了一个文件clc.egg-info/entry_points.txt:

$ cat clc.egg-info/entry_points.txt
[clc_scripts]
clc = clc.main:main

为什么 setuptools 没有创建我的入口点可执行文件?

【问题讨论】:

    标签: python setuptools entry-point


    【解决方案1】:

    1) 生成脚本的入口点叫做console_scripts

    因此,像这样在setup.py 中修复入口点的名称:

    config = {
        ...
        'entry_points':
            'console_scripts': ['clc = clc.main:main']
        }
    }
    

    2) 当你只是 build 你的发行版时,Entry points 不会被执行。它们真的只对installdevelop 有意义。试试python setup.py install

    【讨论】:

    • 啊哈,谢谢。我以为我应该选择自己的入口点组名称。奇怪的是,这似乎并没有太大变化。 build 仍然产生相同的输出。
    • 澄清一下,在运行 python setup.py build 之后,entry_points.txt 现在说 console_scripts 而不是 clc_scripts。仍然没有创建 bin 文件夹。
    • 我很确定当你只是build你的发行版时入口点不会被执行。它们真的只对installdevelop 有意义。试试python setup.py install
    • 不客气。我将您的问题回滚为原始形式,否则答案不再有意义。我会相应地更新它。
    【解决方案2】:

    入口点脚本是在安装时创建的,而不是在构建时创建的,因为它们需要指向安装 python 解释器的正确位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多