Разница между entry_points / console_scripts и сценариями в setup.py?

Есть два основных способа установки консольных скриптов Python на мой путь:setup.py

setup(
    ...
    entry_points = {
        'console_scripts': [
            'foo = package.module:func',
        ],
    }
)

а также

setup(
    ...
    scripts = [
        'scripts/myscript.sh'
    ]
)

Какие есть отличия? Я вижу, что первый подход позволяет мне выбрать хорошее, конкретное имя для моего сценария, но есть ли другие отличия? Различные оригинальные цели, совместимость (setuptools, distutils, ...?), Использование, ...? Я в замешательстве, и хороший подробный ответ может помочь мне (и, возможно, другим) правильно понять все это.

Обновить: Так как я задал вопросPyPA опубликованныйэти классные документы по теме.

Ответы на вопрос(4)

Ваш ответ на вопрос