Это: "script_name = project.main:do_stuff
с помощью setuptools
Setuptools создает сценарии с именем script_name
, которые импортируют и запускают функцию project.main:do_stuff
, а не запускают сценарий напрямую.Вам следует перечитать эту часть ( альтернативная ссылка , если вы используете Distribute) документации по setuptools еще раз, чтобы понять, почему это так.Сценарий, который он создает, содержит if __name__ == "__main__"
еще.Так что да, это все еще дефактный способ заставить его исполниться.
Это копия easy_install, установленная с setuptools
#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'distribute==0.6.14','console_scripts','easy_install'
__requires__ = 'distribute==0.6.14'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('distribute==0.6.14', 'console_scripts', 'easy_install')()
)
Я думаю, что лучше всего определить точку входа и скриптпохож на easy_install.Это импортирует и использует точку входа, как показано в вашем примере if __name__ == "__main__": do_stuff()
.Он отлично подходит для отладки и раннего тестирования, даже если вы используете distutils , нет необходимости добавлять / изменять что-либо.У вас также может быть другое приложение для вызова do_stuff () для доступа к вашему приложению без дополнительных затрат на его запуск в оболочке, что и делает setuptools, distutils copy - это сценарий.