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
用来打包要发布的module,比如上面的setup,打包后就会由其中的name
和version
生成一个打包文件$name-$version.tar.gz
。
namespace_packages:
用来定义python的域名,比如说这里就定义域名lava,这样一来就生成了一个由很多小module egg的集合,那么调用lava-server的时候就变成了lava.lava-server,这里有一个注意点就是作为域名包必须是一个包含__init__.py的module,而且__init__.py中只能包含一行代码: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额外需要的数据,它是一个列表,里面每个元素是一个元组
(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