Python筆記 2 模組和匯入路徑問題

2021-10-02 08:08:18 字數 1785 閱讀 7369

help()

module

模組分類

模組的搜尋路徑

當匯入乙個模組或者函式時,直譯器會首先在內建模組中進行查詢,如果沒有查詢到,則會在sys.path記錄的所有目錄中(包括1.當前程式所在目錄2.標準庫的安裝目錄3.作業系統環境變數pythonpath所包含的目錄。)查詢。#此處參考書籍《python帶我起飛》

package

package_main/

#頂級包

__init__.py #需要包含__init__.py檔案

package_child1/

__init__.py

first.py #子包中的兩個python檔案

second.py

package_child2/

__init__.py

third.py #子包中的兩個python檔案

forth.py

現在我在third.py中 寫 import …package_child1.first(注意:是first,不是 first.py),但是匯入失敗,在網上查了一些資料,大概就是原因,我的third.py檔案是要直接執行的,就是不是完全封裝起來的,不是那種只在裡面定義了一系列函式的檔案,對就是這種檔案,舉個例子:

a.py:

#這個檔案是不會直接執行的

defa()

:defb(

):b.py:

print

("疲憊"

)# 這個檔案可以直接執行

當乙個檔案可以直接執行,並且直接執行時,這個檔案就會被指定為main,即程式的入口,則如果你匯入的檔案所在的資料夾和main檔案至少是在同一層級上,或者,main檔案在匯入的檔案所在目錄的更外層,否則會匯入失敗。借助上面的例子用幾個圖來說明

可以看出third.py 和 first.py 兩個檔案不在同乙個路徑上,即兩者的最近的共同父目錄是package_main,所以當third為main檔案時,匯入 first.py 的路徑為…package_child1.first (package_main/package_child1/first)匯入路徑中包含兩者最近的公共目錄,此時,package_main將不會被作為乙個package看待,所以匯入失敗。

修改為下面這中情況

此時匯入路徑為 package_child1.first (package_child1/first)此時匯入路徑中沒有兩者最近共同的目錄,所以此時會將package_child1看作乙個package看待,所以可以正常匯入。

當然下面這種情況也可以正常匯入

匯入路徑為 package_main.package_child1.first,匯入路徑不包含main檔案和first.py檔案的最近公共目錄,此時package_main會被作為package來看待。

概括來說,操作檔案作為main檔案時,操作檔案和被匯入檔案的最近公共目錄不能作匯入路徑內容

絕對路徑在上面的各種情況下都會正常匯入

python 模組匯入和使用

什麼是模組?在python中,模組是 組織的一種方式,把功能相近的函式或者類放在乙個檔案中。乙個檔案 即乙個.py檔案 就是乙個模組。模組名就是檔名去掉.py。這樣做的好處 1,提高 的復用性和可維護性 乙個模組編寫完成後,可以很方便的在其他專案中匯入使用 2,解決了命名的衝突,不同模組中相同命名不...

python學習筆記(五) 模組匯入

模組是乙個包含所有你定義的函式和變數的檔案,其字尾名是.py。模組可以被別的程式引入,以使用該模組中的函式等功能。這也是使用 python 標準庫的方法。1 模組的定義與分類 在python中模組實際上就是乙個以 py 結尾的原始碼檔案。其中模組主要可以分為三種 2 模組的匯入 使用 import ...

python模組匯入以及sys庫的新增路徑使用

整體檔案的路徑是這樣的 execute是我當前執行程式的模組 模組匯入 1.如果你要匯入的模組或者資料夾下的模組與你要執行程式的模組在同乙個目錄下 檔案 import second module 資料夾 from second file import second file moudle 2.如果你...