programing

setup.py의 entry_points / console_scripts와 스크립트의 차이점은 무엇입니까?

copyandpastes 2021. 1. 15. 20:17
반응형

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 패키지에 대한 문서는 다음을 포함하여 스크립트 대신 진입 점을 사용 하는 몇 가지 이유제안합니다.

  1. 플랫폼 간 호환성 및
  2. 인터프리터 할당 가진 피 __name____main__코드가 두 번 가져올 수 일으킬 수, (다른 모듈이 스크립트를 가져 오는 경우)

Click은 entry_points, btw 로 사용할 함수를 구현하는 좋은 방법 입니다.


명령 줄 실행 파일을 만드는이 두 가지 방법의 주요 차이점 중 하나는 setuptools접근 방식 (첫 번째 예)을 사용하면 스크립트 내부에서 함수를 호출해야한다는 funcmodule입니다. 그러나 distutils접근 방식 (두 번째 예)에서는 스크립트를 직접 호출합니다 (확장 여부에 관계없이 나열 할 수 있음).


설치 도구 진입 점 접근 방식 (# 1)은 Windows에서 일반 Windows 프로그램처럼 두 번 클릭하고 호출 할 수있는 .exe가 생성된다는 이점도 있습니다. 이것은 posix와 같은 시스템의 bin 경로에 스크립트를 배치하는 것에 추가됩니다.


또 다른 차이점은 console_scripts를 사용할 때 내 모듈의 init 파일이 실행되었다는 것입니다. 스크립트 만 사용하는 경우 모듈 init 가 실행되지 않고 스크립트 만 실행되었습니다.

참조 URL : https://stackoverflow.com/questions/18787036/difference-between-entry-points-console-scripts-and-scripts-in-setup-py

반응형