2012-04-02 9 views
19

私はPython拡張モジュールをC++で書いています。 setuptoolsを使ってモジュールを配布する予定です。 32ビットおよび64ビットWindows(setup.py bdist_eggで構築)用のバイナリディストリビューションと、UNIX風プラットフォーム(setup.py sdistで構築)用のソースディストリビューションがあります。ライセンスファイルをsetup.pyスクリプトに含めるには?

私はこのモジュールをBSDライセンスの下でライセンス供与する予定です。 私のソースツリーでは、LICENSE.txtファイルはsetup.pyと共に最上位のフォルダにあります。 インストールパッケージにどのように含める必要がありますか?私は、次の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ファイルでパッケージが定義されていない可能性があります。つまり、 は1つの拡張モジュールだけです。

これを修正するにはどうすればよいですか?

答えて

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いやに動作しません、私はそれだけで生成されたホイールのファイルすなわちのためにあなたが実行したときにことを行い推測: 'のpython setup.py bdist_wheel' https://wheel.readthedocs.io/en/stable/#生成された車輪ファイルを含むライセンス –

関連する問題