Open rainit2006 opened 5 years ago
pythonのsetup.pyについて https://qiita.com/Tadahiro_Yamamura/items/2cbcd272a96bb3761cc8
setup.py関連のファイルは全てプロジェクトのルートに配置する。
setup.pyを書くメリット : 標準で付属するpipを使ってコードを他人と共有できる。
setup.pyの書き方
from setuptools import setup
setup(
name="パッケージの名前",
version="パッケージのバージョン(例:1.0.0)",
install_requires=["packageA", "packageB"],
extras_require={
"develop": ["dev-packageA", "dev-packageB"]
},
entry_points={
"console_scripts": [
"foo = package_name.module_name:func_name",
"foo_dev = package_name.module_name:func_name [develop]"
],
"gui_scripts": [
"bar = gui_package_name.gui_module_name:gui_func_name"
]
}
)
setup.pyと同じディレクトリにsetup.cfgという設定ファイルを作る 基本的な書き方はWindowsの.iniファイルに似ている。"["と"]"でセクションを表し、key=valueという形式で値を指定する。
# metadataセクションではパッケージのメタデータを定義する
# これらの値はpypiで公開した際に表示される。
# なおversion等、一部のキーはディレクティブの指定により外部ファイルから値を取得することができる
# https://setuptools.readthedocs.io/en/latest/setuptools.html#metadata
[metadata]
name = your_package
version = attr: src.VERSION
license = file: license.txt
# optionsセクションではパッケージの依存関係やpip installした時の動作を定義する
# 値が複数ある場合、インデントすることで1行に1つの値を書くことができる。
# https://setuptools.readthedocs.io/en/latest/setuptools.html#options
[options]
install_requires =
packageA
packageB
# optionの内、値のTypeがsectionのものは別セクションで記述する。
[options.extras_require]
develop =
dev_packageA
dev_packageB
[options.entry_points]
console_scripts =
foo = package_name.module_name:func_name
foo_dev = package_name.module_name:func_name [develop]
gui_scripts =
bar = gui_package_name.gui_module_name:gui_func_name
setup(
name='xxxx_models',
packages=find_packages(exclude=('test', 'test.*')),
package_data={
'': [
'data/*.json',
'data/*.md',
'data/*.yml',
'data/models/nlu_model_*/*',
'data/models/int_model/policy_*/*',
'data/models/int_model/*.json',
'data/models/int_model/*.yml',
'data/models/int_model/*.md',
]
},
install_requires=reqs,
test_suite='setup.get_test_suite',
)
Package data can be added to packages using the package_data keyword argument to the setup() function. The value must be a mapping from package name to a list of relative path names that should be copied into the package. https://docs.python.org/2/distutils/setupscript.html
--