Openstack : 15、Openstack-开发基础 entry_points学习

参考:http://blog.csdn.net/pfm685757/article/details/48651389

   entry point是一个字典,从entry point组名映射道一个表示entry point的字符串或字符串列表。Entry points是用来支持动态发现服务和插件的,也用来支持自动生成脚本。

下面是一个demo。

1 、新建一个目录myproject,在该目录下新建一个setup.py文件,内容如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 6/2/17 2:39 PM
# @Site    : 
# @File    : setup.py.py
# @Software: PyCharm
'''
如果使用命令python setup.py bdist_egg,那么会在dist目录中生成foo-1.0-py2.7.egg包,
setup.py中第一句引入需要改为from setuptools import setup)。使用者拿到这个包后,解压,
到foo-1.0目录下执行:python setup.py install,那么,foo.py就会被拷贝到python类路径下,
可以被导入使用(如果安装是egg文件,会把egg文件拷贝到dist-packages目录下)。

'''

from setuptools import setup , find_packages
# name包名 ,version版本号,packages所包含的其他包
# 使用find_packages():默认在setup.py同一目录下搜索含有__init__.py的包,可以将包统一放在src目录中,可能有数据文件夹
# 执行python setup.py bdist_egg 生成egg文件,执行python setup.py install 会将入口文件生成


'''
[root@localhost bin]# cat foo
#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'demo==0.1','console_scripts','foo'
__requires__ = 'demo==0.1'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('demo==0.1', 'console_scripts', 'foo')()
    )

'''

'''
setup(
    name = "demo" ,
    version = "0.1" ,
    packages = find_packages(),)
'''

setup(
    name = "demo",
    version = "0.1",
    packages = find_packages('src'), # 包含所有src的包
    package_dir = {'' : 'src'} , # 告诉distutils包src下
    package_data = {
        # 任何包中有.txt文件,都包含它
        '':['*.txt'],
        # 包含demo的data文件夹中的*.dat
        'demo' : ['data/*.dat'],
    },
    entry_points = {
        'console_scripts': [
            'foo = demo:test',
            'bar = demo:test',
        ],
        'gui_scripts': [
            'baz = demo:test',
        ]
    }

)

2、在myproject目录下,新建一个目录src,在src下面新建目录data,在data下面新建文件__init__.py文件,内容如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def test():
    print "hello world"

if __name__ == '__main__':
    test()


3、构建egg包

进入到含有setup.py目录下,执行如下命令:

python setup.py bdist_egg

然后,安装该模块,执行如下命令:

python setup.py install


4、使用自己创建的包

执行如下命令:

foo

会得到

hello world
执行命令

bar

同样会得到

hello world






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值