Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

Important

This PEP is a historical document. The up-to-date, canonical spec, Licensing examples and user scenarios, is maintained on the PyPA specs page.

×

See the PyPA specification update process for how to propose changes.

부록: 사용자 시나리오

초록

이 문서는 실제 사용자 시나리오에서 PEP 639를 적용하는 방법에 관한 지침을 담고 있습니다.

사용자 시나리오

다음은 사용자 관점에서 일반적인 사용 사례의 범위를 다루고 각각에 대한 지침을 제공합니다. 다음 내용은 법률 자문으로 간주해서는 안 되며, 독자가 자신의 상황에 관한 구체적인 사항을 확신할 수 없다면 관할 지역의 자격을 갖춘 법률 전문가와 상담해야 한다는 점에 유의하십시오.

배포하지 않을 비공개 패키지가 있습니다

패키지를 공개적으로, 즉 회사, 조직 또는 가정 외부에 공유하지 않는다면 공식 라이선스를 포함하는 것이 대개 엄격히 필수는 아니므로, 여기에서 반드시 추가로 해야 할 일은 없습니다.

그러나 패키지 구성에 LicenseRef-Proprietary를 라이선스 표현식으로 포함하고, 프로젝트 디렉터리 루트의 LICENSE.txt 파일에 저작권 문구 및 법적 고지를 포함하는 것이 여전히 좋습니다. 이러한 파일은 패키징 도구에 의해 자동으로 포함됩니다.

법적 제한 없이 제 작업물을 공유하고 싶습니다

라이선스를 포함할 의무는 없지만, 포함하지 않으면 누구도 귀하의 작업물을 다운로드하거나 사용하거나 개선할 권한이 없으므로, 실제로 원하는 것과는 아마 반대일 것입니다. 대신 MIT 라이선스는 간단하고 널리 사용되며 누구나 귀하의 작업물로 원하는 일을 할 수 있도록 허용하므로 훌륭한 선택입니다(귀하가 아마 원하지 않을 소송 제기는 제외합니다).

이를 적용하려면 텍스트를 저장소 루트의 LICENSE.txt라는 파일에 붙여 넣고, 저작권 줄에 연도와 이름을 추가하십시오. 그런 다음 패키징 도구가 지원한다면 [project] 아래의 pyproject.tomllicense = "MIT"를 추가하고, 그렇지 않으면 해당 도구의 구성 파일 또는 섹션에 추가하십시오. 이제 완료되었습니다!

특정 라이선스로 프로젝트를 배포하고 싶습니다

특정 라이선스를 사용하려면, 이미 LICENSE 또는 COPYING으로 시작하는 파일에 해당 라이선스가 들어 있지 않은 경우 저장소 루트의 LICENSE.txt 파일에 라이선스 텍스트를 붙여 넣고, 패키징 도구가 지원한다면 pyproject.toml[project] 아래에 license = "LICENSE-ID"를 추가하십시오. 그렇지 않으면 해당 도구의 구성 파일에 추가하십시오. LICENSE-ID와 복사 가능한 라이선스 텍스트는 ChooseALicenseSPDX같은 사이트에서 찾을 수 있습니다.

널리 사용되는 많은 코드 호스팅 서비스, 프로젝트 템플릿 및 패키징 도구는 라이선스 파일을 대신 추가할 수 있으며, 향후에는 표현식도 지원할 수 있습니다.

이미 라이선스가 적용된 기존 패키지를 유지 관리하고 있습니다

프로젝트에 이미 라이선스 파일과 메타데이터가 있다면 새로운 기능을 활용하기 위해 몇 가지만 수정하면 됩니다.

프로젝트 구성 파일에서 license아래에 라이선스 표현식을 입력하십시오(pyproject.toml[project] 테이블). 또는 패키징 도구에 해당하는 위치에 입력하고, 레거시 license 테이블 하위 키나 License :: 분류자를 모두 제거하십시오. 기존 license 값이 이미 유효한 라이선스 식별자일 수도 있습니다(예: MIT, Apache-2.0 OR BSD-2-Clause 등). 그렇지 않다면 SPDX 라이선스 목록에서 프로젝트에 사용된 라이선스와 일치하는 식별자를 확인하십시오.

pyproject.toml[project] 아래 또는 도구의 구성 파일에서 license-files.paths 또는 license-files.globs 아래에 라이선스 파일을 나열하십시오.

이 방식이 실제로 어떻게 작동하는지 보여 주는 간단하면서도 완전한 실제 사례는 기본 예제를 참조하십시오. 패키징 도구는 레거시 라이선스 메타데이터의 자동 변환을 지원할 수 있습니다. 자세한 내용은 해당 도구의 문서를 확인하십시오.

패키지에 서로 다른 라이선스가 적용된 다른 코드가 포함되어 있습니다

프로젝트에 벤더 제공 종속성이나 다른 오픈 소스 소프트웨어에서 복사한 파일처럼 서로 다른 라이선스가 적용된 타인의 코드가 포함되어 있다면, 관련된 라이선스와 그 관계를 설명하는 라이선스 표현식을 구성할 수 있습니다.

간단히 말하면, License-1 AND License-2두 라이선스 모두가 귀하의 프로젝트 또는 그 일부(예를 들어, 다른 라이선스에 따라 파일을 포함한 경우)에 적용된다는 의미이며, License-1 OR License-2는 사용자의 선택에 따라 두 라이선스 중 어느 것이든 사용할 수 있다는 의미입니다(예를 들어, 사용자에게 여러 라이선스 중에서 선택할 수 있도록 하려는 경우). 괄호(())를 그룹화에 사용하여 가장 복잡한 상황까지 포괄하는 표현식을 만들 수 있습니다.

프로젝트 구성 파일에서 license아래에 라이선스 표현식을 입력하십시오(pyproject.toml[project] 테이블). 또는 패키징 도구에 해당하는 위치에 입력하고, 레거시 license 테이블 하위 키나 License :: 분류자를 모두 제거하십시오.

또한, 모든 라이선스의 전체 라이선스 텍스트를 프로젝트 저장소 어딘가에 파일로 반드시 추가하십시오. 도구가 지원한다면 pyproject.toml[project] 아래에 있는 license-files.pathslicense-files.globs에, 그렇지 않다면 해당 도구의 설정 파일에 각 라이선스의 상대 경로나 glob 패턴을 나열하십시오.

예를 들어, 프로젝트가 MIT로 라이선스되었지만 Apache 2.0 또는 2-clause BSD 중 하나로 라이선스된 번들 종속성(예: packaging)을 포함하고 있다면, 라이선스 표현식은 MIT AND (Apache-2.0 OR BSD-2-Clause)가 될 것입니다. 저장소 루트에 LICENSE.txt가 있고, _vendor 하위 디렉터리에 LICENSE-APACHE.txtLICENSE-BSD.txt가 있을 수 있으므로, 이들을 모두 포함하려면 glob 패턴으로 ["LICENSE.txt", "_vendor/packaging/LICENSE*"]를, 또는 리터럴 파일 경로로 ["LICENSE.txt", "_vendor/LICENSE-APACHE.txt", "_vendor/LICENSE-BSD.txt"]를 지정하면 됩니다.

이를 실제 복잡한 프로젝트에 엔드투엔드로 적용한 완전한 예시는 고급 예제을 참조하고, SPDX 식별자와 표현식을 사용하는 데 더 많은 도움과 예시를 얻으려면 튜토리얼을 참고하십시오.