setup.py의 entry_points / console_scripts와 스크립트의 차이점은 무엇입니까?
기본적으로 다음 두 가지 방법으로 Python 콘솔 스크립트를 내 경로에 설치할 수 있습니다 setup.py
.
setup(
...
entry_points = {
'console_scripts': [
'foo = package.module:func',
],
}
)
과
setup(
...
scripts = [
'scripts/myscript.sh'
]
)
차이점은 무엇입니까? 첫 번째 접근 방식을 사용하면 스크립트에 대해 멋지고 구체적인 이름을 선택할 수 있지만 다른 차이점이 있습니까? 다른 원래 목적, 호환성 (setuptools, distutils, ...?), 사용법, ...? 나는 매우 혼란스럽고 정교하게 정교하게 답장을 보내면이 모든 것을 제대로 이해하는 데 도움이 될 수 있습니다.
업데이트 : PyPA 가 질문을했기 때문에 주제에 대한 멋진 문서를 게시했습니다 .
(굉장한) Click 패키지에 대한 문서는 다음을 포함하여 스크립트 대신 진입 점을 사용 하는 몇 가지 이유 를 제안합니다.
- 플랫폼 간 호환성 및
- 인터프리터 할당 가진 피
__name__
에__main__
코드가 두 번 가져올 수 일으킬 수, (다른 모듈이 스크립트를 가져 오는 경우)
Click은 entry_points
, btw 로 사용할 함수를 구현하는 좋은 방법 입니다.
명령 줄 실행 파일을 만드는이 두 가지 방법의 주요 차이점 중 하나는 setuptools
접근 방식 (첫 번째 예)을 사용하면 스크립트 내부에서 함수를 호출해야한다는 func
것 module
입니다. 그러나 distutils
접근 방식 (두 번째 예)에서는 스크립트를 직접 호출합니다 (확장 여부에 관계없이 나열 할 수 있음).
설치 도구 진입 점 접근 방식 (# 1)은 Windows에서 일반 Windows 프로그램처럼 두 번 클릭하고 호출 할 수있는 .exe가 생성된다는 이점도 있습니다. 이것은 posix와 같은 시스템의 bin 경로에 스크립트를 배치하는 것에 추가됩니다.
또 다른 차이점은 console_scripts를 사용할 때 내 모듈의 init 파일이 실행되었다는 것입니다. 스크립트 만 사용하는 경우 모듈 init 가 실행되지 않고 스크립트 만 실행되었습니다.
'programing' 카테고리의 다른 글
removeAllViews ()와 removeAllViewsInLayout ()의 차이점은 무엇입니까? (0) | 2021.01.15 |
---|---|
인수 또는 널이 전달되지 않은 경우 Java 3 도트 매개 변수 (varargs) 동작 (0) | 2021.01.15 |
ES6 수업은 왜 올리지 않나요? (0) | 2021.01.15 |
PDF 문서에서 텍스트를 추출하는 방법은 무엇입니까? (0) | 2021.01.15 |
C #에서 문자열의 개별 문자를 반복하는 가장 빠른 방법은 무엇입니까? (0) | 2021.01.15 |