一、什么是模塊?
Python 模塊(Module),是一個 Python 文件,以 .py 結尾,包含了 Python 對象定義和Python語句。
(模塊能定義函數,類和變量,模塊里也能包含可執行的代碼。)
簡單的說:模塊就是包含函數(對象)的文件。
二、為什么要創建模塊?
首先,直接回答這個問題,為什么要創建和使用模塊?———為了更好的共享代碼,即為了代碼的重用。
當然我們可以在代碼基中需要的地方通過復制和粘貼代碼來共享代碼,但是如果我們的代碼基中散布着同一個函數的多個副本,(如果我們決定修改函數)這肯定會很難維護。
更好的辦法是創建一個模塊,其中包含你想共享的所有代碼的一個標准副本。
總結一下好處:
1.模塊讓你能夠有邏輯地組織你的 Python 代碼段。
2.把相關的代碼分配到一個模塊里能讓你的代碼更好用,更易懂,更好維護。
三、怎么使用模塊?
3.1如何找到模塊?
查看模塊時,解釋器會在3個主要位置搜索模塊:
1.當前工作目錄
2.解釋器的site-packages位置
3.標准庫位置
取決於很多因素,解釋器搜索位置2和位置3的順序可能有變化,但解釋器總是首先搜索位置1(你的當前工作目錄)。
因為我們的工作目錄不總是模塊所在的目錄,所以我們模塊不放在位置1.
又因為標准庫包含的模塊集合由Python核心開發人員管理,這個模塊集合很龐大,設計宗旨是讓這些模塊得到廣泛使用,但是不能修改,所有位置3放不了。
所有我們的自己的模塊就只能放在位置2了,當然放在位置2也是最好的選擇。
使用 “setuptools” 將模塊安裝到site-packages
3.2 創建安裝文件
新建 mymodules 文件夾,文件夾中包含:function.py, setup.py 和 README.txt
function.py:
自定義的模塊中的邏輯代碼,文件名在符合規范的前提下可以任意。
setup.py:
必須有這個文件,文件名必須為 setup.py ,它用來描述function.py 文件中的模塊。這個文件包含兩行代碼:第一行從setuptools模塊導入setup函數,第二行調用這個setup函數。
setup函數接收大量參數,其中很多是可選的。
比較重要的兩個參數:第一個參數制定了發布包;最后一個參數列出了創建發布包時包含的 .py 文件;
# setup.py from setuptools import setup setup( name='function', # ”name“ 參數指定發布包。常見的做法時按模塊命名發布包。 version='1.0', description='The Test Tools', author='Alex', author_email='huangtq10@163.com', url='test.com' py_modules=['function'], # 這是包含在這個包中的所有 ”.py“ 文件的列表。對於這個例子,只有一個文件: ”function“。 )
README.txt:
除了setup.py, setuptools 機制還要求有 README.txt 文件,可以在這個文件中放入包的文本描述。盡管必須有這個文件,但它的內容是可選的,
就目前測試而言,放了一個創建了一個名為 README.txt 的空文件。
3.3 創建發布文件
在這個階段,應該有3個文件放在mymodules文件夾中:function.py, setup.py 和 README.txt
3.3.1 在Windows上創建一個發布文件
在包含這3個文件的文件夾打開一個命令行提示窗口,然后輸入以下命令:
c:\Users\Alex\mymodules> py -3 setup.py sdist # 執行 ”setup.py“ 中的代碼..... 並傳遞 ”sdist“ 作為參數。
執行命令后,在工作文件夾(mymoudules)中會由 setuptools 創建dist文件夾,之前mymoudules文件中的3個文件合並到了一個發布文件中,這是一個可安裝文件,包含了模塊的源代碼,在這里這個文件的文件名為function-1.0.zip。
可以在dist文件夾中找到新創建的這個ZIP文件。
3.3.2 在類UNIX操作系統上的發布文件
3個文件(setup.py, README.txt 和 function.py)放在了一個文件夾中,在操作系統的命令行上執行這個命令:
mymodules $ python3 setup.py sdist
# 運行python3;執行”setup.py“中的代碼..... ;並傳遞”sdist”作為參數。
執行命令后,這3個文件已經合並到一個原發布文件(就是上面的sdist參數)。這是一個可安裝的文件,包含了自定義模塊的源代碼,在這里這個文件名為function-1.0.tar.gz。
在名為 dist 的文件夾中找到新創建的這個歸檔文件,dist 文件夾也由 setuptools 創建,位於工作文件夾下面(在這里工作文件夾就是 mymodules)
3.4 用 pip 安裝包
Python提供了很多工具來幫助我們完成工作,Python 3.4(及更新版本)包含一個名為pip的工具,pip 表示Package Installer for Python (Python的包安裝工具)。
Window操作系統上安裝發布文件:
在dist文件夾打開一個命令提示窗口,在這個命令提示窗口中鍵入下面的這行命令
C:\User\...\dist>py -3 -m pip install function-1.0.zip # 運行Python3 時包括模塊 pip,然后讓 pip 安裝指定的ZIP文件。
類UNIX操作系統上安裝發布文件:
在Linux, UNIX或Mac OS X上,從新創建的 dict 文件夾打開一個終端,然后在提示窗口中執行以下命令
.../dist$ sodu python3 -m pip install function-1.0.tar.gz # 運行Python3時包含模塊pip,然后讓 pip 安裝指定的壓縮rar文件; # 這里我們使用“sudo”命令來確保安裝時有適當的權限。
現在function模塊已經安裝為site-packages的一部分。
向其他Python程序員共享代碼有以下兩種方式:
1.非正式:
要非正式地共享模塊,只需要用你希望的任何方式把它發布給你想發布的任何人(可以使用email、U盤或者從你的個人網站上下載)。
2.正式:
要正式地共享你的模塊,可以把發布文件上傳到Python集中管理的基於web的軟件存儲庫,名為 PyPI(拼作 “pie-pee-eye”, 這是 Python Package Index的縮寫)。
這個網站就是為了讓所有Python程序員共享各種第三方Python模塊。要了解這個網站上提供了哪些模塊,可以訪問PyPI網站:http://pypi.python.org/pypi 。
要了解通過 PyPI 上傳和共享發布文件的過程,請閱讀Python Packaging Authority 維護的一個在線指南,可以在這里找到:https://www.pypa.io (這個指南並沒有太多內容)。