Python Import
名詞說明
模組(Module)
模組
通常指得是一個.py檔
。
套件(Package)
套件
指的是模組所在的實體目錄
。- 將模組依功能建立在不同
套件
中,可以解決名稱衝突問題。 - 當在資料夾中建立一個空的
__init__.py
,代表這個資料夾被視為一個Python Package
,如此一來,才能成功import
到這個資料夾中存在的Module
。 import Module
時,該資料夾中的__init__.py
會被執行,當中可以設定一些初始化的動作。
sys.path
import sys
sys.path
- 執行以上程式碼,會列出所有
Python
模組所在路徑,是Python
在import
模組時的依據。包含:正在執行模組的所在路徑、標準套件路徑和第三方套件路徑等。 import
陳述句會在相同目錄下尋找modu.py
,如果沒找到,則會試著尋找在sys.path
中遞迴地尋找modu.py
,如果還是沒有,則會引發ImportError
例外。- 於
.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