그것은이다 "script_name = project.main:do_stuff
setuptools에
setuptools에와는 script_name
그 수입라는 이름의 스크립트를 생성하고 기능 project.main:do_stuff
를 실행, 직접 스크립트를 실행할 수 없습니다. setuptools 문서의 this part (Distribute를 사용하는 경우 alternate link)을 다시 읽어야 이러한 이유를 이해할 수 있습니다. 스크립트는 여전히 if __name__ == "__main__"
을 포함합니다. 그렇습니다. 이것은 여전히 실행되도록하는 방법입니다.
이
는 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을 유사한 스크립트를 정의하는 것이 가장 좋습니다 생각과 함께 설치 easy_install을의 복사본입니다. 예를 들어 if __name__ == "__main__": do_stuff()
에 표시 한 것과 같이 엔트리 포인트를 가져 와서 사용합니다. 디버깅 및 초기 테스트에 유용하며, distutils을 사용하는 경우 아무 것도 추가/변경할 필요가 없습니다. dou_stuff()를 호출하여 쉘에서 실행하는 오버 헤드없이 앱에 액세스 할 수있는 다른 앱을 가질 수도 있습니다. 이는 setuptools가 수행하는 작업이며 distutils copy는 스크립트입니다.
로깅을 사용할 때 pypi의 로컬 배포/개발 대 배포에서 '__name__'의 차이점을 어떻게 처리합니까? 나는 로컬 dev에서 "__main__"을 생성하고 setuptools install을 위해 ". "을 생성하므로 preffered'logging.getLogger (__ name __)'을 사용할 수 없을 것 같습니다. –
smido