Почему setuptools не создает мои точки входа?

Структура каталогов моего проекта выглядит следующим образом:

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

main.py выглядит так:

def main():
    print "it works!"

in 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 не создал исполняемый файл моей точки входа?


person hughes    schedule 07.03.2014    source источник


Ответы (2)


1) Точка входа для создания сценариев называется console_scripts< /а>.

Поэтому исправьте имя точки входа в вашем setup.py следующим образом:

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

2) точки входа не будет выполняться, если вы просто build свой дистрибутив. Они действительно имеют смысл только для install или develop. Попробуйте python setup.py install.

person Lukas Graf    schedule 07.03.2014
comment
Ага, спасибо. Я думал, что должен был сам выбирать имена групп точек входа. Как ни странно, это, похоже, мало что изменило. build по-прежнему выдает тот же результат. - person hughes; 07.03.2014
comment
Чтобы уточнить, после запуска python setup.py build entry_points.txt теперь говорит console_scripts вместо clc_scripts. Папка bin по-прежнему не создается. - person hughes; 07.03.2014
comment
Я почти уверен, что точки входа не будут выполняться, когда вы просто build свой дистрибутив. Они действительно имеют смысл только для install или develop. Попробуйте python setup.py install. - person Lukas Graf; 07.03.2014
comment
Пожалуйста. Я вернул ваш вопрос в исходную форму, иначе ответ больше не имеет смысла. Я обновлю его соответственно. - person Lukas Graf; 07.03.2014

Сценарии точки входа создаются во время установки, а не во время сборки, потому что они должны указывать на правильное расположение устанавливающего интерпретатора Python.

person Ivo    schedule 26.03.2014