在Python中以相對路徑或者絕對路徑來導入文件或者模塊的方法
相對路徑和絕對路徑的概念
絕對路徑就是文件的真正存在的路徑,是指從硬盤的根目錄(盤符)開始,進行一級級目錄指向文件。
相對路徑就是以當前文件為基准進行一級級目錄指向被引用的資源文件。
以下是常用的表示當前目錄和當前目錄的父級目錄的標識符
../ 表示當前文件所在的目錄的上一級目錄
./ 表示當前文件所在的目錄(可以省略)
/ 表示當前站點的根目錄(域名映射的硬盤目錄)
在Python中可以驗證一下上述的標識方法:
測試的目錄結構:
3、 再了解一下Python中sys.path的使用
sys.path是python的搜索模塊的路徑集,是一個list,如下:
可以在python 環境下使用:
sys.path.append(‘你的模塊的名稱’)
sys.path.insert(0,’模塊的名稱’)
添加相關的路徑,但在退出python環境后自己添加的路徑就會自動消失!
代碼中的實現如下:
4、最后了解一下 python 在不同層級目錄import 模塊的方法(重點)
有一個文件夾/home/a, 里面有個模塊叫b.py, 我怎么把他import到程序里?
方法一: (屬於剛開始分析的代碼里第一種情況)
import sys;
sys.path.append(“/home/a/”)
import b
方法二:
在目錄里面增加__init__.py文件,里面可以寫import時執行的代碼,當然也可以留空就可以.
import home.a.b
方法三:
from home.a.b import *
前提 home、a中都包括__init__.py 即:要導入的文件的當前目錄和父目錄都要有init.py文件
Python包含子目錄中的模塊方法比較簡單,關鍵是能夠在sys.path里面找到通向模塊文件的路徑。
下面將具體介紹幾種常用情況:
(1)主程序與模塊程序在同一目錄下:
如下面程序結構:
– src
|– mod1.py
|– test1.py
若在程序test1.py中導入模塊mod1, 則直接使用import mod1
(2)主程序所在目錄是模塊所在目錄的父(或祖輩)目錄
如下面程序結構:
– src
|– mod1.py
|– mod2
| – mod2.py
– test1.py
若在程序test1.py中導入模塊mod2, 需要在mod2文件夾中建立空文件__init__.py文件,然后使用 import mod2.mod2.
(3)主程序導入上層目錄中模塊或其他目錄(平級)下的模塊
如下面程序結構:
– src
|– mod1.py
|– mod2
|– mod2.py
|– sub
| – test2.py
– test1.py
若在程序test2.py中導入模塊mod1.py和mod2.py。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立該文件。然后調用方式如下:
下面程序執行方式均在程序文件所在目錄下執行,如test2.py是在cd sub;之后執行python test2.py
而test1.py是在cd src;之后執行python test1.py; 不保證在src目錄下執行python sub/test2.py成功。
(4)從(3)可以看出,導入模塊關鍵是能夠根據sys.path環境變量的值,找到具體模塊的路徑。這里僅介紹上面三種簡單情況。