entry_points 不会在 Python 中使用 pip 或 easy_install 创建自定义脚本?

3 python pip setuptools easy-install setup.py

我正在使用简单的入口点来制作一个自定义脚本,它在setup.py:

  entry_points = {
           'my_scripts': ['combine_stuff = mypackage.mymod.test:foo']
  }
Run Code Online (Sandbox Code Playgroud)

其中mypackage/mymod/test.py包含:

import argh
from argh import arg
@arg("myarg", help="Test arg.")
def foo(myarg):
    print "Got: ", myarg
Run Code Online (Sandbox Code Playgroud)

当我使用这个安装我的包时(在与 相同的目录中setup.py)

pip install --user -e .
Run Code Online (Sandbox Code Playgroud)

入口点似乎根本没有得到处理。这是为什么?

如果我使用 安装distribute easy_install,例如:

easy_install --user -U .
Run Code Online (Sandbox Code Playgroud)

然后入口点得到处理并创建:

$ cat mypackage.egg-info/entry_points.txt 
[my_scripts]
combine_stuff = mypackage.mymod.test:foo
Run Code Online (Sandbox Code Playgroud)

但是没有combine_stuff在我的bin目录中的任何位置放置名为的实际脚本(如~/.local/bin/)。它似乎没有被制造出来。这里出了什么问题?我怎样才能让它制作一个可执行脚本,并且最好也能使用它pip?

小智 5

答案是使用console_scripts而不是my_scripts. 不清楚脚本名称是程序员的内部标签以外的任何东西。