參考: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