python模組,python模組下載
1.模組的定義
隨著程式碼越寫越多,在一個檔案裡代碼就會越來越長,越來越不容易維護。為了編寫可維護的代碼,我們把很多函數分組,分別放到不同的檔案裡,這樣,每個檔案包含的代碼就相對較少,很多程式設計語言都採用這種組織代碼的方式。在Python中,一個.py檔案就稱之為一個模組.abc.py模組的名字就變成了mycompany.abc
2.__init__.py
每一個包目錄下面都會有一個__init__.py的檔案,這個檔案是必須存在的,否則,Python就把這個目錄當成普通目錄,而不是一個包。__init__.py可以是空檔案,也可以有Python代碼,因為__init__.py本身就是一個模組,而它的模組名就是mycompany。
3.變數域
python的函數域預設的命名規範是:正常的函數和變數名是公開的(public),可以被直接引用,類似__xxx__這樣的變數是特殊變數,可以被直接引用,但是有特殊用途.類似_xxx和__xxx這樣的函數或變數就是非公開的(private),不應該被直接引用.python 沒有限制不能對private進行引用.
4.模組安裝
在Python中,安裝第三方模組,是通過包管理工具pip完成的。
一般來說,第三方庫都會在Python官方的pypi.python.org網站註冊
安裝Pillow的命令就是:
pip install Pillow
5.引用模組的搜尋路徑
當我們試圖載入一個模組時,Python會在指定的路徑下搜尋對應的.py檔案,如果找不到,就會報錯.
預設情況下,Python解譯器會搜尋目前的目錄、所有已安裝的內建模組和第三方模組,搜尋路徑存放在sys模組的path變數中.
如果我們要添加自己的搜尋目錄,有兩種方法:
一是直接修改sys.path,添加要搜尋的目錄:
>>> import sys>>> sys.path.append('/Users/michael/my_py_scripts')
第二種方法是設定環境變數PYTHONPATH,該環境變數的內容會被自動添加到模組搜尋路徑中。
6.__init__.py檔案用法
(1)匯入其他的包,或者模組。
[python] #貌似可以不需要寫 import readers import writers import commands import users import meta import auth import admin
這樣,當我們匯入這個包的時候,__init__.py檔案自動運行。幫我們匯入了這麼多個模組,我們就不需要將所有的import語句寫在一個檔案裡了,也可以減少代碼量。
在一個包裡有foo.py、__init__.py
#__init__.pyimport osimport datetime
#foo.pyfrom __init__ import *print datetime.datetime.now()
(2)__all__
__init__.py 中還有一個重要的變數,叫做 __all__。我們有時會使出一招“全部匯入”,也就是這樣:
from PackageName import *
這時 import 就會把註冊在包 __init__.py 檔案中 __all__ 列表中的子模組和子包匯入到當前範圍中來。
比如__all__ = ["Module1", "Module2", "subPackage1", "subPackage2"]
(3)加入mian函數,當作為模組被調用時執行
def main(): print('__init__.main()')
(4)引入package的過程中,__init__.py會運行,因此,如果某些變數或方法需要常駐記憶體,可以將它們寫入__init__.py檔案中
import PackageName
7 pip常用命令
Usage: pip <command> [options] Commands: install 安裝包. uninstall 卸載包. freeze 按著一定格式輸出已安裝包列表 list 列出已安裝包. show 顯示包詳細資料. search 搜尋包,類似yum裡的search. wheel Build wheels from your requirements. zip 不推薦. Zip individual packages. unzip 不推薦. Unzip individual packages. bundle 不推薦. Create pybundles. help 當前協助. General Options: -h, --help 顯示協助. -v, --verbose 更多的輸出,最多可以使用3次 -V, --version 現實版本資訊然後退出. -q, --quiet 最少的輸出. --log-file <path> 覆蓋的方式記錄verbose錯誤記錄檔,預設檔案:/root/.pip/pip.log --log <path> 不覆蓋記錄verbose輸出的日誌. --proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port. --timeout <sec> 連線逾時時間 (預設15秒). --exists-action <action> Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup. --cert <path> 認證.
# pip show --files somepackage pip查看已安裝的包中包含哪些檔案# pip list --outdated pip檢查哪些包需要更新
8 pip逾時的解決
在使用pip安裝包時經常會出現逾時的錯誤。可以通過鏡像下載相應的安裝包。
例如清華大學鏡像地址:http://e.pypi.python.org
可以使用下面的命令安轉
pip install flask -i http://e.pypi.python.org/simplepip install flask -i http://pypi.v2ex.com/simple
還可以再設定檔中修改timeout和鏡像地址
[global]timeout = 6000index-url = http://e.pypi.python.org/simple[install]use-mirrors = truemirrors = http://e.pypi.python.org
在unix和macos,設定檔為:$HOME/.pip/pip.conf
在windows上,設定檔為:%HOME%\pip\pip.ini