1.導入模塊
任何Python程序都可以作為模塊導入,只要Python解釋器能找到我們定義的模塊所在位置即可,一般來講,在一個模塊被導入時,Python解釋器會按照下面的步驟進行搜索:
- 在當前所在目錄下搜索這個模塊
- 在環境變量
PYTHONPATH
中指定的路徑列表中依次搜索 - 在Python安裝路徑中去搜索
根據Python的搜索路徑的方式,想讓Python解釋器找到自定義的模塊可以使用下面的三種方式(不包含模塊在當前目錄的方式):
1.1 將模塊放置在默認的目錄
Python解釋器會在默認目錄中查找需要使用模塊,使用 sys
模塊的 path
變量即可查看解釋器默查找的目錄,如下:
1 import sys 2 import pprint 3 4 pprint.pprint(sys.path) 5 # output: 6 # ['C:\\Users\\gyzhao\\Desktop', 7 # 'C:\\Python27\\lib\\site-packages\\distribute-0.6.27-py2.7.egg', 8 # 'C:\\Windows\\system32\\python27.zip', 9 # 'C:\\Python27\\DLLs', 10 # 'C:\\Python27\\lib', 11 # 'C:\\Python27\\lib\\plat-win', 12 # 'C:\\Python27\\lib\\lib-tk', 13 # 'C:\\Python27', 14 # 'C:\\Python27\\lib\\site-packages', 15 # 'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg-info']
一般情況下應該存放到 site-packages
目錄中,這里用於存放標准庫外的第三方模塊。
1.2 在程序中直接設置模塊目錄
我們在任意位置創建一個文件夾,用於存放自定義的模塊,這里是 C:/Python
,在這個目錄中新增一個 Hello.py
文件,內容如下:
# hello.py def hello(): print "hello,world!"
同樣的通過將模塊所在的目錄添加到 sys
模塊的 path
變量中即可,這樣就可以使用這個模塊中定義的函數:
import sys sys.path.append('c:/python') import hello hello.hello() # hello,world!
1.3 修改環境變量
還可以通過修改環境變量,來告知Python解釋器自定義模塊的位置:
我的電腦 --> 屬性 --> 高級 --> 環境變量
添加 PYTHONPATH
變量,多個目錄使用;
分開即可,如下:
這樣我們就可以直接使用hello
模塊了:
import hello hello.hello() # hello,world!
1.4 補充:Sublime Text下環境變量的配置
如果使用使用Sublime Text來編寫Python代碼的話,使用第三種方式,即修改 PYTHONPATH
變量的方式,在 Ctrl+B
運行代碼時,會找不到環境變量里面聲明路徑中定義的模塊,這是Sublime Text自身的問題,因為不管使用使用Python自帶的IDLE,還是CMD來執行代碼,都是可以通過 PYTHONPATH
變量來找到其聲明路徑中的模塊的,如果想要在Sublime Text中通過環境變量來使用第三方模塊的話需要顯式的在Sublime Text的 Python.sublime-build
文件中聲明,步驟如下:
Preferences --> Browse Packages... --> 找到Python文件夾 --> 打開Python.sublime-build文件
將將路徑添加到env
屬性中,多個路徑使用;
分隔,修改如下:
{
"cmd": ["python", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env":{
"PYTHONPATH":"C:\\Python;"
}
}
2. 在模塊中增加測試代碼
有時候我們需要在模塊中添加測試代碼,可以直接執行檢測模塊是否正確工作。但是在程序作為模塊被其他程序引用時,不執行這些測試代碼,通過使用 __name__
變量我們可以很容易的實現這點:
1 # -- coding: utf-8 -- 2 3 def hello(): 4 print "hello,world!" 5 6 def test(): 7 hello() 8 # 如果作為程序運行,Hello函數會被執行, 9 # 作為模塊時不執行,因為這時:__name__ = hello 10 if __name__ == '__main__': test()
3. 了解模塊具體內容
在使用一個模塊前,我們應該首先去了解這個模塊的具體內容,這樣能節省很多的時間,避免在沒有了解模塊具體內容的情況下,盲目的編寫代碼。使用下面的幾種辦法可以讓我們很快的對一個模塊建立大體的印象。
3.1 使用dir
查看模塊包含的內容可以使用 dir
函數,它會將對象(模塊所有函數、類、變量等)的所有特性列出來,如下:
1 # -- coding: utf-8 -- 2 import sys 3 4 # 通過列表推導式過濾內部成員 5 publicMembers = [n for n in dir(sys) if not n.startswith('_')] 6 7 for m in publicMembers: 8 print m+'' 9 10 # output 11 # api_version 12 # argv 13 # ...
3.2 使用all變量
__all__
變量定義了模塊的公有接口(public interface),如下:
# -- coding: utf-8 -- import copy # output: ['Error', 'copy', 'deepcopy'] print copy.__all__
__all__
變量等於告訴解釋器:從模塊導入所有內容(使用 *
)時,即下面的形式:
from copy import *
那就只能使用 __all__
定義的函數。如果使用__all__
沒有定義的成員,只要顯式的導入即可。如果導入的模塊沒有定義 __all__
變量,使用 import *
語句默認將會輸出模塊中所有不以下划線(_
)開頭的全局名稱。
3.3 查看文檔字符串
通過 __doc__
變量,我們可以查看一個 range
函數的文檔字符串:
# -- coding: utf-8 -- print range.__doc__
不是每個模塊和函數都有清晰的文檔字符串,如果想要更清楚的了解一些模塊和函數時如果工作的,應該參閱Python庫參考(http://docs.python.org/2/library/index.html),這里有更標准、詳盡的信息。
3.4 使用help獲取幫助
help函數和之間檢測文檔字符串相比,help函數能獲取更多的信息,比如函數簽名等:
# -- coding: utf-8 -- import copy print help(copy.copy)
3.5 閱讀源代碼
除了自己動手編寫代碼外,閱讀源代碼是學習Python最好的方式。如果想要查看一個模塊的源碼位置,可以這樣:
# -- coding: utf-8 -- import csv print csv.__file__ # C:\Python27\lib\csv.pyc
查詢處理的文件是.pyc
后綴結尾的文件,這是一個經過Python解釋器處理后生成的字節碼文件,我們只需要查看對於的以.py
后綴結尾的源文件即可。
4. 組織模塊的形式——包
為了進一步的組織好模塊,可以將它們分組為包。包基本上就是一類模塊。當模塊存儲在文件中時,包就是模塊所在的目錄。為了能夠讓Python解釋器將其作為包來對待,它必須包含一個命名為__init__.py
的文件( __ init__.py
可以只是一個空文件,但是它也可以執行包的初始化代碼,包括設置__all__
變量等)。如果將它作為普通模塊導入的話,文件的內容就是包的內容。
下面是一個簡單的包布局,包名為"drawing",其中包含名為"color"和"shapes"的模塊:
C:\Python # 存放模塊的路徑 C:\Python\drawing #包目錄(drawing包) C:\Python\drawing\__init__.py # 包代碼 C:\Python\drawing\colors.py # colors模塊 C:\Python\drawing\shapes.py # shapes模塊
配置好包之后,可以按照以下方式導入包的內容:
# -- coding: utf-8 -- import drawing # 導入drawing包 import drawing.colors # 導入drawing包的colors模塊 from drawing import shapes # 導入drawing包的shapes模塊
5. 使用包管理工具——pip
pip 是一個用來管理Python包的工具。我們可以利用它來幫助我們安裝、升級、卸載Python的第三方擴展包。
1. 安裝pip
首先需要下載get-pip.py這個文件,然后在控制台中使用Python命令來運行這個文件,即可進行安裝:
python get-pip.py
更多安裝的細節可以參考:https://pip.pypa.io/en/latest/installing.html
2. 配置環境變量
安裝完pip
之后,我們可以在Python的安裝根目錄下面看一個Scripts
文件夾,這時候我們將該文件的磁盤路徑,例如:
C:\Python27\Scripts
添加到系統的Path
環境變量中即可。
3. 管理包(安裝、升級、卸載)
配置了環境變量之后,我們就可以在控制台中運行pip
命令來對包進行管理了,例如:
pip install SomePackage # 安裝一個包 pip install --upgrade SomePackage # 升級一個包 pip uninstall SomePackage # 卸載一個包
更多pip
的使用細節,可以參考:https://pypi.python.org/pypi/pip/
參考資料&進一步閱讀
http://docs.python.org/2/using/windows.html
http://stackoverflow.com/questions/3701646/how-to-add-to-the-pythonpath-in-windows-7
http://docs.sublimetext.info/en/latest/reference/build_systems.html
https://pypi.python.org/pypi/pip/