1,包
定義:把解決一類問題的模組放在同乙個資料夾裡
匯入語法:在import from...import匯入語句中(而不是在使用時)遇到帶點的
本質:就是乙個包含__init__.py檔案的目錄,在py2中,必須有__init__.py檔案,py3沒有也可以執行。包只是模組的一種形式而已,包即模組,是為了匯入方便使用,2.
2,匯入包的兩種方式:
使用絕對路徑 不管在包內部還是外部 匯入了就能用絕對路徑:以glance作為起始不能挪動,但是直觀
可以隨意移動包 只要能找到包的位置,就可以使用包裡的模組相對路徑包裡的模組如果想使用其它模組的內容只能使用相對路徑,使用了相對路徑就不能在包內直接執行了
相對匯入:用.或者..的方式最為起始(只能在乙個包中使用,不能用於不同目錄內)3,自己建立乙個包相對匯入只能用from的形式。
from ..cmd import
manage
manage.main()
import包4,建立完包之後,匯入模組。但有一種匯入模組方式是不對的osos.makedirs(
'glance/api')
os.makedirs(
'glance/cmd')
os.makedirs(
'glance/db')
l ='
glance/__init__.py
','w'))
'glance/api/__init__.py
','w'))
'glance/api/policy.py
','w'))
'glance/api/versions.py
','w'))
'glance/cmd/__init__.py
','w'))
'glance/cmd/manage.py
','w'))
'glance/db/__init__.py
','w'))
'glance/db/models.py
','w'))
map(
lambda f:f.close() ,l)
importglance
glance.cmd.manage.get()
glance.api.policy.get()
glance.db.models.get()
分析錯誤原因:
這種匯入包的模式是錯誤的,因為glance匯入後,sys.path中只有到glance上一級的目錄,解決方發:可以通過sys.path 檢視,而在glance.cmd.manage.get() 呼叫的時候,
glance執行它的__inint__,找不到cmd/api/db檔案, 所以要在每一層的init分別匯入關聯路徑
glance/├──解決方法__init__.py from glance import
api
from glance import
cmd
from glance import
db├── api
│ ├──
__init__.py from glance.api import
policy
from glance.api import
versions
│ ├── policy.py
│ └── versions.py
├── cmd
from glance.cmd import
manage
│ ├──
__init__
.py│ └── manage.py
└── db
from glance.db import
models
├──
__init__
.py └── models.py
5,import glance之後直接呼叫模組中的方法
glance/├──__init__.py from .api import *
from .cmd import *
from .db import *├── api
│ ├──
__init__.py __all__ = ['
policy
','versions']
│ ├── policy.py
│ └── versions.py
├── cmd
__all__ = ['
manage']
│ ├──
__init__
.py│ └── manage.py
└── db
__all__ = ['
models']
├──
__init__
.py └── models.py
import glance6,軟體開發規範policy.get()
python導包 Python中包的匯入
15 june 2015 當你從python直譯器退出後再重新進入,之前所寫的 包括變數 函式都已經不存在了,如果你想週期性的執行這些功能但是並不想每次都將這些 重新輸入一遍,你可以將這些 儲存成檔案在本地進行儲存 也就是指令碼 當你寫的程式規模越來越大,維護起來越發吃力,你或許會想把它分割為不同功...
python包匯入細節 Python包的匯入說明
import模組from 包 import 模組 上面的 有什麼區別呢?from 模組 import 這種匯入相當與把模組裡面的 都複製到當前模組中 也就是該語句所在位置 這時候你可以直接使用這個模組裡面的變數名稱和方法等。所以這種方式如果變數和方法和當前模組有重名則會不生效。import 模組 這...
python匯入自己的包
當遇到無法匯入某個python模組時,可能會是沒有安裝某個模組,也有可能是某模組在載入過程中失敗,也有可能是陷入了迴圈匯入的問題。importerror no mudule named mymodule 當前執行的程式載入的路徑有錯。python執行時將從以下位置嘗試載入python modules...