1. 程式人生 > >Python學習手冊之__main__ 模組,常用第三方模組和打包釋出

Python學習手冊之__main__ 模組,常用第三方模組和打包釋出

在上一篇文章中,我們介紹了 Python 的 元組拆包、三元運算子和對 Python 的 else 語句進行了深入講解,現在我們介紹 Python 的 __main__ 模組、常用第三方模組和打包釋出。
檢視上一篇文章請點選:https://www.cnblogs.com/dustman/p/10057482.html

__main__ 模組
大多數 Python 程式碼要麼是匯入的模組,要麼是執行某些任務的指令碼。但是,有時需要使一個檔案既可以作為模組匯入,也可以作為指令碼執行。

def sayHello():
 str = "hello"
 print(str)

if __name__ == "
__main__": print('This is main of module "hello.py"')

執行結果:

>>>
This is main of module "hello.py"
>>>

當 Python 直譯器讀取原始檔時,它會執行它在檔案中找到的所有程式碼。在執行程式碼之前,它定義了一些特殊的變數。
例如,如果 Python 直譯器將該模組 (原始檔) 作為主程式執行,它將一個特殊的 __name__ 變數設定為字串值 "__main__"。如果該檔案是從另一個模組匯入的,__name__ 將設定為該模組的名稱。
如果我們把上一個例子的程式碼使用一個檔名為 cmd.py

儲存,使用名字 cmd 可以匯入到另一個指令碼作為一個模組。
cmd.py

def sayHello():
 str = "hello"
 print(str)

if __name__ == "__main__":
 print('This is main of module "hello.py"')

cmd_hello.py

import cmd

cmd.sayHello()

執行結果:

>>>
hello
>>>
我們建立了一個模組 cmd 並通過另外的指令碼來呼叫。

常用第三方模組
除了內建的模組外,Python 還有大量的第三方模組。


Django 是 Python 最常用的 Web 框架,它支援 instagramDisqus等網站執行。它有許多非常有用的特性,並且它缺少的特性都可由它的擴充套件包來滿足。CherryPyFlask 同樣也是非常流行的 Web 框架。
如果要從網上爬取資料 BeautifulSoup 模組將幫你省很多力氣,這比用正則表示式構建自己的資料提取規則要好得多。

雖然 Python 提供了以程式設計方式訪問網站 (如 urllib) 的模組,但它們的使用非常麻煩。使用第三方庫 request 會使 HTTP 請求變得更加容易。

有許多第三方模組可以幫助 Python 實現科學和數學計算。matplotlib 模組允許你使用 Python 來建立 2D 圖形。模組 Numpy 允許使用比原生 Python 解決方案快得多的多維陣列,同時它還包含執行數學操作的函式,例如對陣列的矩陣轉換。模組 SciPy 包含對 NumPy 功能的很多擴充套件。
Python 同樣可以用來做遊戲開發,它通常被用來作為使用其它語言編寫有些的指令碼語言,但也可以用來自己製作遊戲。

Panda 3D 模組幫助你建立 3D 遊戲,pygame 幫助你建立 2D 遊戲。

打包釋出
在 Python 中,打包一詞是指將您編寫的模組以標準格式編寫,以使其他程式設計師能夠輕鬆地安裝和使用它們。這涉及到模組、setuptools 和 distutils 的使用。
打包的第一步是正確組織檔案。將要放入庫中的所有檔案放在同一個父目錄中。該目錄還應該包含一個名為 __init__.py 的檔案,該檔案可以是空的,但必須存在與目錄中。這個目錄放在另一個包含自述檔案和許可檔案的目錄下,同時還有一個非常重要的檔案 setup.py。目錄結構如下。
Foo/
|-- bin/
| |-- foo
|
|-- foo/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- docs/
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README
簡要解釋一下:
    1、 bin/: 存放專案的一些可執行檔案,當然你可以起名script/之類的也行。
    2、 foo/: 存放專案的所有原始碼。(1) 原始碼中的所有模組、包都應該放在此目錄。不要置於頂 層目錄。(2) 其子目錄tests/存放單元測試程式碼; (3) 程式的入口最好命名為                      main.py。
    3、 docs/: 存放一些文件。
    4、 setup.py: 安裝、部署、打包的指令碼。
    5、 requirements.txt: 存放軟體依賴的外部Python包列表。
    6、 README: 專案說明檔案。

您可以根據需要在目錄中放置很多的 Python 指令碼檔案。

下一步是在 setup.py 檔案裡寫打包指令,裡面包含了軟體包所需的資訊,以便將其上傳到 PyPI 並通過 pip 安裝。

from distutils.core import setup

setup(
 name='cmd',
 version='1.0',
 description='sdk for di input , output and param',
 author='ZS',
 author_email='[email protected]',
 url='',
 license='No License',
 platforms='python 3.7',
 py_modules=['factory'],
 package_dir={'': 'pack'},
 packages=['lib', 'common.http']
)

建立 setup.py 檔案後,可將其上傳到 PyPI 上,或使用命令列構建二進位制的發行版 (可執行安裝程式)。
要構建一個發行版,請使用命令列進入到包含 setup.py 的目錄,並執行命令 python setup.py sdist 建立原始碼分發包,Windows 下可執行 python setup.py bdist_wininst 來構建二進位制的發行版。
使用 python setup.py register 註冊賬號,使用 python setup.py sdist upload 上傳大家可下載的發行版。
前面介紹了是其他 Python 程式設計師使用的模組打包方法。如果你的使用者不是程式設計師,那麼他的計算機大多數沒有安裝 Python。因此,需要將指令碼打包為相關平臺 (如 Windows) 的可執行檔案。
在 Windows 平臺上,有許多工具可用於將 Python 指令碼轉換為可執行檔案。py2exe 可以用來將 Python 指令碼和它所需的庫打包到單個可執行檔案中,你也可以用 PyInstallercx_Freeze

對於 Linux Max 使用者來說這是不必要的,因為大多數使用者都安裝了 Python

 

 

 

 “一些人總是找無數理由放棄自己想做的事情,實際上他們只需要一個理由放手去做。” -- 瑪莎·葛蘭姆