Openstack : 15、Openstack-開發基礎 entry_points學習

來源:互聯網
上載者:User

參考: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 sysfrom pkg_resources import load_entry_pointif __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






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.