2020-02-25python高手之路學(xué)習(xí)隨筆(6.2)

繼續(xù)高手之路第六章 分發(fā)

入口點(diǎn)
先按照包
pip install entry-point-inspector
查看python提供了入口點(diǎn)的包的命令
epi group list

查看指定入口的具體信息

epi group show console_scripts
console_scripts 可以為指定的入口點(diǎn)函數(shù)

為python腳本設(shè)置入口函數(shù)

foobar222/client.py

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


def main():
    print("Client started")

foobar222/server.py

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

def main():
    print("Server started")

書上沒寫的一點(diǎn),估計(jì)這玩意應(yīng)用的是python2的規(guī)則

給foobar222目錄里面價(jià)一個(gè) init.py

手寫setup.py

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

from setuptools import setup,find_packages

setup(
    name = "foobar222",
    version = "1",
    author="Julien Danjou",
    author_email="xzwgm81@163.com",
    description = "make in chinese",
    url = "https://www.baidu.com/",
    packages = ["foobar222"],
    entry_points = {
        "console_scripts":["foobard = foobar222.server:main",
                           "foobar = foobar222.client:main",],
    },

)

第三部 注冊為入口點(diǎn)函數(shù)

運(yùn)行命令 python setup.py install
接著會(huì)自動(dòng)自動(dòng)python的系統(tǒng)文件Lib 生成foobar222的egg包
而書上值得控制臺(tái)腳本應(yīng)該是生成在了系統(tǒng)目錄的Scripts下面,順帶還附送了該py腳本生成的exe

其實(shí)到這里我已經(jīng)明白這玩意是啥了。。。某種程度上來說這適合于python2,而不是python3,對(duì)于pytho3來說這種方法已經(jīng)落伍了。僅僅只是注冊函數(shù)的話

這玩意的另一個(gè)作用應(yīng)該是無視正常的包的引用法則,直接引用被注冊的函數(shù)功能,這句應(yīng)該是貫穿上下的主要作用,然后我看著書上的代碼突然很痛苦,整個(gè)章節(jié)起碼少了一半的操作命令,雖然猜出來了但是還是很痛苦。太費(fèi)時(shí)間了,全自己摸索。

之后從這里開始分為2種引用辦法。這里對(duì)應(yīng)的是使用插件跟驅(qū)動(dòng)程序
第一種直接指定引用一個(gè)入口點(diǎn)函數(shù)功能

第一種

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

from pkg_resources import load_entry_point
import time


load_entry_point('foobar222==1', 'console_scripts', 'foobar')()

另一種是遍歷某一個(gè)入口點(diǎn)下的全部注冊函數(shù),接著使用.load()激活

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

from pkg_resources import iter_entry_points
import time


for i in iter_entry_points("console_scripts"):
    print(i)
    if str(i) == "foobard = foobar222.server:main":
        i.load()()

到此為止,stevedore就算了吧,禁止套娃。

到此,第六章學(xué)習(xí)完畢。思考一下,那么這種辦法的缺點(diǎn)是什么。直接對(duì)全局python 開發(fā)函數(shù)接口。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容