包和模組的匯入問題

2022-06-12 19:39:09 字數 2414 閱讀 7936

本質:匯入模組的本質就是把python檔案解釋一遍,

匯入包的本質就是把包檔案下面的init.py檔案執行一遍。

1)同目錄下模組的匯入

#同級目錄下模組的匯入

import module_name #直接匯入模組

import module1_name,module2_name #匯入多個模組 使用:模組名.函式名

from modeule_name import * #匯入模組中所有函式和變數等。。。不推薦使用

from modeule_name import m1,m2,m3 #只匯入模組中函式m1,m2,m3 使用:直接使用m1,m2,m3就可以

from modeule_name import m1 as m #匯入module_name模組中函式m1並且將函式重新複製給m 使用:直接用呼叫m

2)不同目錄下模組的匯入

#不同目錄下模組的匯入 當前檔案main.py

#目錄結構

# ├── credit_card

# │# ├── core

# │ ├── __init__.py

# │ └── main.py # 當前檔案

# ├── conf

# │ ├── __init__.py

# │ └── setting.py

# │ └── lzl.py

import sys,os

#獲取當前目錄的上上級目錄絕對路徑,也就是credit_card

credit_card_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

#把credit_card目錄加入到系統路徑

sys.path.insert(0,credit_card_path)

#檢視系統環境路徑

print(sys.path)

例子:如果main資料夾要用conf資料夾下的setting檔案,直接匯入是不行的

應該:fron conf import setting

setting.函式名() #這樣執行setting模組中的函式

3)不同目錄下模組連環匯入

#不同目錄多個模組之間互相匯入

#目錄結構

# ├── credit_card

# │# ├── core

# │ ├── __init__.py

# │ └── main.py # 當前檔案

# ├── conf

# │ ├── __init__.py

# │ └── setting.py

# │ └── lzl.py

如果在setting檔案中呼叫模組lzl.py,可以用語句 import lzl,但是如果這樣,

我們在main.py檔案中呼叫setting檔案時,就會報錯#importerror: no module named 'lzl'

這個時候我們需要將 import lzl 換為 from . import lzl

然後main.py檔案中呼叫setting檔案時,才可以正常執行。

4)不同目錄多個模組相互匯入,用相對路徑

root

├── credit_card

├── readme.md

├── core

│ ├── __init__.py

│ └── main.py

├── conf

│ ├── __init__.py

│ └── setting.py

│ └── lzl.py

lzl.py檔案內容:

def name():

print("name is lzl")

setting.py檔案內容:

#當前檔案settings,呼叫lzl.py模組 相對路徑

from . import lzl #通過相對路徑匯入模組lzl

def set():

print("in the settings")

lzl.name() #執行lzl模組下的函式

set() #執行函式set

core目錄下的檔案中的mian.py檔案內容:

#不同目錄之間連環import 當前檔案main.py 相對路徑

from root.credit_card.conf import settings

settings.set() #執行settings下的函式

注意:lzl.py以及settings.py檔案未變,main.py檔案去掉了繁雜的sys.path新增的過程,

直接執行from root.credit_card.conf import settings,使用相對路徑,更加

簡潔方便!

匯入模組 和 包

一 模組 模組一共三種 python標準庫 第三方模組 應用程式自定義模組 在cmd命令終端,檢視命令os 來自第三方 time模組來自第三方 模組兩種執行方式 1 用於啟動執行 2 用於被呼叫執行 key import module 將執行檔案 module 的目錄路徑插入到sys.path的第乙...

python深入之包和模組,包和模組的匯入方式

關於包和模組 2 包 是乙個有層級的目錄結構,包含n個模組或者n個子包,包中一定要有 init py檔案 3 庫 是完成一定功能的 集合,表現形式是乙個模組,或包 4 框架 是乙個架構層面的概念,為解決乙個開放性問題而設計的具有一定約束性的支撐結構,通過框架可以快速實現乙個解決問題的骨架,後面按照框...

匯入模組 包

什麼是模組 乙個模組就是包含了python定義和宣告的檔案,檔名就是模組名字加上.py 但其實import載入的模組分為4個通用類別。1 使用python編寫的 2 已被編譯為共享庫或dll的c或c 擴充套件 3 包好一組模組的包 4 使用c編寫並鏈結到python直譯器的內建模組 如何匯入模組 同...