首頁  >  文章  >  後端開發  >  python套件導入的方式有哪些

python套件導入的方式有哪些

WBOY
WBOY轉載
2023-04-18 21:16:034576瀏覽

執行檔和目標導入模組在同一目錄

直接import

例如我要在ma_main.py中導入env包中的make_env.py檔, 從而讀取其中的函數

因為此時ma_main.pyenv套件都在 src這個根目錄下, 所以可以直接import繼續導入

python套件導入的方式有哪些

#這裡fromimport是因為make_env.py中只有一個函數就是make_env(), 所以直接import該函數, 在呼叫的時候可以直接寫名字

python套件導入的方式有哪些

如果是from env import make_env, 那麼呼叫make_env.py中的make_env()函數., 還要用.進行宣告

PS: from env import make_envimport env.make_env是一樣的

執行檔和目標導入模組不在同一目錄

如果執行檔和模組不在同一目錄,這時候直接import是找不到自訂模組的。

python套件導入的方式有哪些

python套件導入的方式有哪些

例如這種情況: 要在main.py中匯入pwcong套件從而執行__init__.py的一些方法

然而main.py./Torch/main/#下, 而pwcong ./Torch/

即不在同一個目錄, 此時main.py檔案python解釋器模組搜尋的路徑列表中不包含是./Torch

所以這時候就要用python中自帶的sys套件導入自訂模組的路徑, 從而手動添加Python解釋器在main.py中的模組搜尋的路徑列表 , 之後才能成功導入

Python解釋器搜尋模組的路徑列表

  • 在Python中,當你導入一個模組時,解釋器會從一個路徑列表中找到該模組

  • 這個路徑清單通常會包含Python解釋器安裝的預設路徑,以及在環境變數PYTHONPATH中指定的任何路徑

  • 使用sys.path.append()函數可以在這個路徑清單中新增新的路徑,以便解譯器可以找到你指定的模組。

  • 新增路徑後,你就可以透過import語句導入該路徑下的模組。

  • 這並不會影響命名空間,而只是告訴解釋器在哪裡可以找到要導入的模組。

操作步驟

匯入自訂模組的步驟如下:

  • 先導入sys模組

  • #然後透過sys.path.append(path) 函數來導入自訂模組所在的目錄

  • 導入自訂模組。

即在main.py的最上面幾行寫入如下程式碼手動定義該檔案的python解釋器路徑

import sys
sys.path.append(r"C:\Users\PC\Desktop\Torch") # 要加上地址生命符r, 并且要是绝对路径

__init__.py中定義一個hello函數, 列印hello

python套件導入的方式有哪些

#透過sys.path.append新增解釋器模組搜尋的路徑, 然後透過模組名執行函數

python套件導入的方式有哪些

一個模組必須要有__init__.py檔案

在Python中,一個目錄要被視為一個套件,它必須包含一個__init__.py檔案。這個文件可以是一個空文件,或是包含一些包初始化的程式碼。

沒有__init__.py檔案的目錄就只是一個目錄, 其他py檔案無法導入該目錄下的任何py檔案中的函數

__init__. py檔案可能包含:

  • 聲明命名空間__init__.py檔案可以包含變數、類別和函數的宣告

  • 初始化程式碼init.py檔案可以包含初始化程式碼,這些程式碼會在套件被導入時執行。這可以用於執行某些必要的操作,例如配置套件或確保套件的依賴項已安裝。

  • 子模組導入init.py檔案可以包含導入其他模組的程式碼。這可以用於將子模組新增到套件的命名空間中,以便使用者可以存取它們。

命名空間

在 Python 中,命名空間是一個包含變數和函數名字的字典,用來記錄每個識別碼(identifier)的名稱和值。 Python 解譯器中的每個命名空間都是字典對象,可以透過字典的鍵值對來存取其中的變數和函數。

Python 中有三種命名空間:

  • 內建命名空間:包含了Python解釋器內建的變數和函數,這些變數和函數可以直接在程式中使用而不需要導入任何模組,例如:print()函數、len()函數等。

  • 全域命名空間:在模組定義時創建,包含了在模組檔案中定義的變數和函數。可以在模組中的任何地方使用這些變數和函數。

  • 局部命名空間:在函數呼叫時創建,包含了函數中定義的變數和函數。只能在函數內部使用這些變數和函數。

命名空間的作用是避免不同命名空間之間的變數或函數名稱衝突,並且可以更好地管理程式中的變數和函數。在Python中,可以透過使用globalnonlocal關鍵字來存取和修改全域和非局部命名空間中的變數。

以上是python套件導入的方式有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除