多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

Python(發音:英[?pa?θ?n],美[?pa?θɑ:n]),是一種面向對象、直譯式電腦編程語言,也是一種功能強大的通用型語言,已經具有近二十年的發展歷史,成熟且穩定。它包含了一組完善而且容易理解的標準庫,能夠輕鬆完成很多常見的任務。它的語法非常簡捷和清晰,與其它大多數程序設計語言不一樣,它使用縮進來定義語句。

Python支持命令式程序設計、面向對象程序設計、函數式編程、面向切面編程、泛型編程多種編程範式。與Scheme、Ruby、Perl、Tcl等動態語言一樣,Python具備垃圾回收功能,能夠自動管理存儲器使用。它經常被當作腳本語言用於處理系統管理任務和網絡程序編寫,然而它也非常適合完成各種高級任務。Python虛擬機本身幾乎可以在所有的作業系統中運行。使用一些諸如py2exe、PyPy、PyInstaller之類的工具可以將Python源代碼轉換成可以脫離Python解釋器運行的程序。

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

這篇文章將會聊聊python代碼中的入口點.很多人可能知道,入口點一般會放在setup.py 文件中,經過打包後可以作為命令行使用,不過很少有人會去用它.接下來,我將會介紹如何使用入口點生成python包,之後就可以讓別人在代碼中或者命令行下使用.

安裝過python包的都知道使用pip install , setup.py就是定義了你自己開發的包的相關信息,然後可以打包上傳到python的包管理中心供別人下載.而入口點entry_points可以讓包作為命令行工具使用.

Snek,Inc.

恭喜你!你剛剛被任命為"snek半導體和軟件公司"的CEO,作為CEO,你的第一個工作是讓員工開發出snek的原型系統,很快,工程師就做出來了,它是一個python腳本,snek.py:

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

在公司產品發佈的那一天,你演示了這個原型系統,運行很順利:

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

SaaS--Snek as a Service

不幸的是,用戶不會使用python,他們只想在電腦的命名行下直接使用Snek的服務,於是工程師們加班加點作出了下一個版本,讓snek在安裝時自動生成控制檯腳本,這樣就可以在命令行下運行了.他們是怎麼做的?只需要在setup.py 腳本中包含包名,依賴等信息,像下面這樣:

下面的代碼就是指定了應該從snek腳本的main函數開始執行.

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

工程師說,控制檯腳本就是特殊的入口點,setuptools 在你的包被別人安裝時,讀取其中的內容並生成某些腳本文件.現在,讓我們從源代碼中安裝(當然你可以發佈為python庫,讓別人使用pip下載安裝):

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

在公司的年度產品會上,你展示了這個amazing的產品:

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

Snek for Everyone

沒有人不喜歡Snek,公司的IPO超過了60億美元.有些高級用戶希望為他們量身定製高級的版本.工程師又加班加點做了出來:

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

他們加了一個豪華版的Snek,這讓高級用戶特別開心.小編推薦一個學python的學習裙,【六九九+七四九+八五二】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多幹貨和技術資料分享!

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

Snek International Community

全球數百萬人都在使用snek,人們對snek不同版本的需求越來越高,而且一些snek的專業用戶(程序員)要求snek可以定製,他們想開發自己的snek版本.

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

他們增加了snek的基礎架構,當snek運行時,使用被稱作snek_types 的入口點註冊其他類型的snek,這樣就能動態的在控制檯輸出不同的snek版本.

具體來說,get_sneks 中的pkg_resources.iter_entry_points('snek_types') 遍歷所有註冊到入口點的snek名,然後加入snek版本中.於是,開發者們加入了一個可愛版本的snek,命名為cute_snek.py :

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

如何找到這個可愛版本的snek呢?像下面這樣定義setup.py:

代碼中指定了從cute_snek.py腳本尋找cute_snek.

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

然後像之前一樣打包:

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

現在我們就能在命令行下成功的運行這個可愛版本的snek,這是從cute_snek中動態加載的:

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

既然cute_snek可以動態的加載,那麼所有類型的snek應該都可以動態加載,於是工程師們又修改了代碼:

無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!私信小編“資料”有開發工具,很多幹貨和技術資料分享!

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

現在重新打包snek:

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

大功告成!!!

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

到此為止,你應該大概知道了如何使用python中的入口點了吧.

多了一個python腳本,所有人都開始喜歡它!python代碼入口點詳解

最後,想必大家看到這兒,也已經對python代碼入口點有了瞭解,希望可以幫大家解惑

還有,小編也為初學者準備了 Python學習資料和視頻教程,如有讀者或你的朋友需要,

都可以私信小編<資料>就能無條件領取!

相關推薦

推薦中...