Python的egg包

1、背景

查看flower的源码,首先看到flower的主程序如下:

#!/usr/local/sinasrv2/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: ‘flower==0.7.3‘,‘console_scripts‘,‘flower‘
__requires__ = ‘flower==0.7.3‘
import sys 
from pkg_resources import load_entry_point

if __name__ == ‘__main__‘:
    sys.exit(
        load_entry_point(‘flower==0.7.3‘, ‘console_scripts‘, ‘flower‘)()

load_entry_point,它的信息来源是entry_points.txt

entry_points.txt来源呢?

setup.py里面有entry_points 信息,会根据这些信息生成egg info目录,里面有entry_points.txt文件, 里面的内容就是setup.py里的entry_points信息

setup(
    name=‘flower‘,
    version=get_package_version(),
    description=‘Celery Flower‘,
    long_description=open(‘README.rst‘).read(),
    author=‘Mher Movsisyan‘,
    author_email=‘[email protected]‘,
    url=‘https://github.com/mher/flower‘,
    license=‘BSD‘,
    classifiers=classifiers,
    packages=find_packages(exclude=[‘tests‘, ‘tests.*‘]),
    install_requires=install_requires,
    test_suite="tests",
    tests_require=get_requirements(‘test.txt‘),
    package_data={‘flower‘: [‘templates/*‘, ‘static/**/*‘, ‘static/*.*‘]},
    entry_points={
        ‘console_scripts‘: [                                                                                                         
            ‘flower = flower.__main__:main‘,
        ],  
        ‘celery.commands‘: [
            ‘flower = flower.command:FlowerCommand‘,
        ],  
    },  
)

  

然后将封装一个python脚本

说明flower脚本实际调用的是:

两种启动方式

[celery.commands]
flower = flower.command:FlowerCommand

[console_scripts]
flower = flower.__main__:main

 

2、如何制作一个egg包以及对应的setup.py如何写呢?

 

3、参考资料

1、http://www.cnblogs.com/itech/archive/2011/02/13/1953268.html

2、http://zhiwei.li/text/2011/06/load_entry_point%E5%92%8Csetup-egg/

3、http://django-china.cn/topic/90/

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。