python 包的匯入

2022-04-11 02:02:05 字數 3074 閱讀 1502

1,包

定義:把解決一類問題的模組放在同乙個資料夾裡 

匯入語法:在import    from...import匯入語句中(而不是在使用時)遇到帶點

本質:就是乙個包含__init__.py檔案的目錄,在py2中,必須有__init__.py檔案,py3沒有也可以執行。包只是模組的一種形式而已,包即模組,是為了匯入方便使用,2.

2,匯入包的兩種方式:

使用絕對路徑 不管在包內部還是外部 匯入了就能用

不能挪動,但是直觀

絕對路徑:以glance作為起始

可以隨意移動包 只要能找到包的位置,就可以使用包裡的模組

包裡的模組如果想使用其它模組的內容只能使用相對路徑,使用了相對路徑就不能在包內直接執行了

相對路徑

相對匯入:用.或者..的方式最為起始(只能在乙個包中使用,不能用於不同目錄內)

相對匯入只能用from的形式。

from ..cmd import

manage

manage.main()

3,自己建立乙個包

import

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)

包4,建立完包之後,匯入模組。但有一種匯入模組方式是不對的

import

glance

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 glance

policy.get()

6,軟體開發規範

python導包 Python中包的匯入

15 june 2015 當你從python直譯器退出後再重新進入,之前所寫的 包括變數 函式都已經不存在了,如果你想週期性的執行這些功能但是並不想每次都將這些 重新輸入一遍,你可以將這些 儲存成檔案在本地進行儲存 也就是指令碼 當你寫的程式規模越來越大,維護起來越發吃力,你或許會想把它分割為不同功...

python包匯入細節 Python包的匯入說明

import模組from 包 import 模組 上面的 有什麼區別呢?from 模組 import 這種匯入相當與把模組裡面的 都複製到當前模組中 也就是該語句所在位置 這時候你可以直接使用這個模組裡面的變數名稱和方法等。所以這種方式如果變數和方法和當前模組有重名則會不生效。import 模組 這...

python匯入自己的包

當遇到無法匯入某個python模組時,可能會是沒有安裝某個模組,也有可能是某模組在載入過程中失敗,也有可能是陷入了迴圈匯入的問題。importerror no mudule named mymodule 當前執行的程式載入的路徑有錯。python執行時將從以下位置嘗試載入python modules...