Python Import

名詞說明

模組(Module)

模組通常指得是一個.py檔

套件(Package)

  1. 套件指的是模組所在的實體目錄
  2. 將模組依功能建立在不同套件中,可以解決名稱衝突問題。
  3. 當在資料夾中建立一個空的__init__.py,代表這個資料夾被視為一個Python Package,如此一來,才能成功import到這個資料夾中存在的Module
  4. import Module時,該資料夾中的__init__.py會被執行,當中可以設定一些初始化的動作。

sys.path

import sys
sys.path
  1. 執行以上程式碼,會列出所有Python模組所在路徑,是Pythonimport模組時的依據。包含:正在執行模組的所在路徑、標準套件路徑和第三方套件路徑等。
  2. import陳述句會在相同目錄下尋找modu.py,如果沒找到,則會試著尋找在 sys.path中遞迴地尋找modu.py,如果還是沒有,則會引發ImportError例外。
  3. .bash_profile設定PYTHON環境變數,可以將專案路徑加入sys.path中,如此一來,就能import專案中的modu.py
    $ export PYTHONPATH=/users/Bob/myproject
    

import ... as ...

用法:

import [套件名稱.模組名稱] as [別名]

範例:import tensorflow 模組,並以別名 tf 代替

import tensorflow as tf

範例:import polls 套件下的 models 模組

import polls.models  # 未使用別名
print(polls.models.name)  # 印出模組中變數 name 的值

import polls.models as pm  # 使用別名
print(pm.name)  # 印出模組中變數 name 的值

from ... import ...

用法:

from [套件名稱.模組名稱] import [類別|方法|變數]

範例一:import django.shortcuts 模組的 render 方法

from django.shortcuts import render

範例二:import polls 目錄下 models.py 中的 Question 類別

from polls.models import Question

路徑

絕對路徑

範例:import polls 路徑下 models.py 中的 Question 類別

from polls.models import Question

相對路徑

範例一:import 相同套件中 models 模組的 Question 類別

from .models import Question

範例二:import 相同套件中的 views 模組,引用後可使用 views 中定義的方法

from . import views

views.index
views.detail

建議

一般推薦使用絕對路徑引用,可讀性較高;除非 package 路徑太過複雜冗長,才考慮使用相對路徑方法。

參考網站

http://www.codedata.com.tw/python/python-tutorial-the-2nd-class-3-function-module-class-package

results matching ""

    No results matching ""