2012-04-02 2 views
19

나는 C++에서 파이썬 확장 모듈을 작성했다. setuptools를 사용하여 모듈을 배포 할 계획입니다. 32 비트 및 64 비트 Windows (setup.py bdist_egg으로 빌드) 용 바이너리 배포판과 UNIX 계열 플랫폼 용 소스 배포판 (setup.py sdist으로 빌드 됨)이 있습니다.setup.py 스크립트에 라이선스 파일을 포함시키는 방법은 무엇입니까?

BSD 라이센스에 따라 모듈의 라이센스를 부여 할 계획입니다. 내 소스 트리에서 LICENSE.txt 파일은 setup.py와 함께 최상위 폴더에 있습니다. 설치 패키지에 어떻게 포함시켜야합니까?

from setuptools import setup, Extension 
from glob import glob 

setup(
    name = 'Foo', 
    version = '0.1.0', 
    ext_modules = [Extension('Foo', glob('Source/*.cpp'))], 
    package_data = {'': ['LICENSE.txt']} 
) 

그것은 작동하지 않았다가, 라이센스 파일은 설치 패키지에 포함되지 않습니다

나는 다음과 같은 setup.py 스크립트를 시도했다. 아마도 setup.py 파일이 어떤 패키지도 정의하지 않았기 때문에 하나의 확장 모듈 만 있습니다.

어떻게 수정합니까?

답변

12

사용 data_files :

setup(
    name = "Foo", 
    version = "0.1.0", 
    ext_modules = [Extension("Foo", glob("Source/*.cpp"))], 
    data_files = [("", ["LICENSE.txt"])] 
) 

두 발언 :

  1. 제품과 함께 라이센스를 제공하기 위해 직접 필요가 없습니다, 당신은이를 지정의 distutils에 license metadata를 사용할 수 있습니다.

  2. 코드 : 예를 들어

+0

"LICENSE.txt"는 [ "LICENSE.txt"여야합니다. "/"경로는 UNIX의 시스템 루트이며 Windows에는 존재하지 않습니다. Windows에서 테스트했을 때 존재하지 않는 경로에 대한 오류 메시지가 나타납니다. 대신에 ""를 사용하면 효과가있는 것 같습니다. 테스트했을 때 LICENSE.txt가 "C : \ Python27 \ Lib \ site-packages \ Foo-0.1.0-py2.7-win32.egg"폴더에있는 것처럼 보였습니다. Foo.pyd와 같은 폴더 – user763305

+0

@ user763305 : 저는 귀하의 발언에 대한 답변을 편집했습니다. 미안합니다. 내 대답에 문제가 해결 된 경우 내 대답의 왼쪽에있는 체크 표시를 클릭하여 허용으로 표시하는 것이 좋습니다. – orlp

-1

에 혼합 작은 따옴표와 큰 따옴표를 사용하지 마십시오 :

setup(
    ... 
    license="ZPL", 
    classifiers=[ 
     ... 
     'License :: OSI Approved :: Zope Public License', 
     ... 
     ], 
    ...) 

추가로 당신은 'long_description'으로 라이센스 텍스트를 삽입 할 수 있습니다 :

setup(
    ... 
    long_description="Package description. \nLicense Text", 
    ...) 
+2

어디서 _file_ 라이센스를 포함합니까? – mbdevpl

-1

setup.cfg 파일을 작성하고 거기에 지정 :

[metadata] 
license_file = LICENSE.txt 
+1

이 – user

+0

@user 네, 내가 생각 .. 작동하지 않습니다 그것은 단지 않습니다 생성 휠 파일 즉, 당신은으로 실행시 : bdist_wheel' '파이썬 setup.py를 https://wheel.readthedocs.io/en/stable/# 생성 된 휠 파일을 포함한 라이센스 –