【Python開発及びテスト】lavaでsetup.py解析
5717 ワード
setup.pyコンテンツ
setup(
name='lava-server',
version=version_tag(),
author="Zygmunt Krynicki",
author_email="[email protected]",
namespace_packages=['lava', ],
packages=find_packages(),
test_suite="lava_server.tests.run_tests",
license="AGPL",
description="LAVA Server",
long_description="""
LAVA Server is an application container for various server side
applications of the LAVA stack. It has an extensible architecture that
allows to add extra features that live in their own Python packages. The
standard LAVA extensions (dashboard and scheduler) are already contained in
this package.
""",
url='http://www.linaro.org/engineering/engineering-groups/validation',
classifiers=[
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Affero General Public License v3",
("License :: OSI Approved :: GNU Library or Lesser General Public"
" License (LGPL)"),
"Operating System :: OS Independent",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Topic :: Software Development :: Testing",
],
install_requires=[
'django >= 1.8',
'django-restricted-resource >= 2015.09',
'django-tables2 >= 1.2',
'docutils >= 0.6',
'lava-tool >= 0.2',
'markdown >= 2.0.3',
'psycopg2',
'markupsafe',
'mocker >= 1.0',
'netifaces >= 0.10.4',
'pyzmq',
'jinja2',
'django-auth-ldap >= 1.1.8',
'voluptuous >= 0.8.8',
# dashboard
'pygments >= 1.2',
# scheduler
"lava-dispatcher",
"simplejson",
"twisted",
],
data_files=[
('/etc/lava-server',
['etc/settings.conf',
'etc/env.yaml']),
('/etc/apache2/sites-available',
['etc/lava-server.conf']),
('/etc/logrotate.d',
['etc/logrotate.d/django-log',
'etc/logrotate.d/lava-master-log',
'etc/logrotate.d/lava-publisher-log',
'etc/logrotate.d/lava-scheduler-log',
'etc/logrotate.d/lava-server-gunicorn-log']),
('/usr/share/lava-server',
['instance.template']),
('/usr/share/lava-server',
['share/add_device.py',
'etc/lava-master.service',
'share/render-template.py']),
].extend(DEVICE_TYPE_TEMPLATES),
scripts=[
'lava_server/lava-daemon',
'lava_server/lava-master',
'lava_server/lava-publisher',
'share/lava-mount-masterfs',
],
tests_require=[
'django-testscenarios >= 0.7.2',
],
zip_safe=False,
include_package_data=True)
コマンドおよびパラメータの意味解析
python setup.py sdist
は、上記のsetupのようなパブリッシュするmoduleをパッケージングするために使用され、パッケージング後にname
およびversion
からパッケージングファイル$name-$version.tar.gz
が生成される.namespace_packages:
pythonを定義するためのドメイン名、例えばここでドメイン名lavaを定義すると、多くの小さなmodule eggの集合が生成され、lava-serverが呼び出されるとlavaになる.lava-server、ここで注意したいのはドメイン名パッケージとして__を含む必要があることです.init__.pyのmodule、そして_init__.pyには1行のコードしか含まれません:import(‘pkg_resources’).declare_namespace(name).詳細はこちら:name_packages.
packages:
一般に、
find_packages()
を使用してすべてのパケットおよびサブパケットを自動的に検索し、パケット名リスト情報を返し、import
のパケット情報がここから来たと推測する.例えばlavaでは、[lava, lava.lava-server, lava.lava-dispatcher, ...]
のようなリストが得られます.詳細は、find_packages()
を参照してください.data_files:
インストール時にmoduleの追加必要なデータを格納するために使用されます.リストです.各要素は1つのメタグループ
(directory, [datafiles])
で、そのうちdirectory
はカスタムで命名することができ、[datafiles]
は工事中にすでに存在するファイルでなければなりません.例を挙げると、('/etc/lava-server', ['etc/settings.conf', 'etc/env.yaml'])
は、システム/etc
の下にlava-server
ディレクトリを構築し、その後、エンジニアリングディレクトリetc
の下のsettings.conf
およびenv.yaml
を/etc/lava-server
の下にコピーすることを意味するので、ここでinstall
を実行する際にはsudo
を追加する必要がある.詳細はdata_files
を参照してください.scripts:
スクリプトファイルをインストールするために使用されます.デフォルトのインストールパス
$(which python)
、すなわちデフォルトのpythonのパスです.たとえば、lava
では、プロジェクトディレクトリlava-server
の下のlava-daemon
、lava-master
、lava-publisher
、およびプロジェクトディレクトリの下のshare
の中のlava-mount-master
を/usr/bin
の下にコピーします(システムデフォルトのpythonを使用しています).zip_safe:
このパラメータは、インストール時に
egg
圧縮ファイルにインストールするか、直接
にインストールするかを示すために使用されます.true
を設定すると、bdist_egg
ツールはインストールするファイルをegg
に圧縮しますが、必ず使用できる保証はありません.中にはC拡張プログラムが含まれているので、警告が表示され、自分で修復する必要があります.zip_safe
を設定する場合は、必ず圧縮ファイルとしてインストールして使用可能かどうかを自分で確認してください.詳細はzip_safe
include_package_data:
setuptoolsに
MANIFEST.in
で定義されたパスの下にあるすべてのデータファイルが自動的に含まれていることを示すために使用され、MANIFEST.in
がインストールする必要があるファイルを定義するために使用されていることがわかります.詳細:include_package_data