python中import某個模組時,首先會從python的內建模組中查詢是否含義該模組的定義,若未查找到會從sys.path對應的模組路徑查詢是否含有對應模組的定義,如果搜尋完成依然沒有對應a模組時則丟擲import的異常。
__file__ 屬性儲存著當前執行檔案的絕對路徑,sys.path 中儲存著搜尋路徑,並且sys.path[0]中存著呼叫python直譯器的指令碼所在的目錄,即執行檔案所在的目錄位置。
例如f:/pycharm_project/pointnet_pointnet2_pytorch-master/me.py檔案中執行如下**。
import os
import sys
print(__file__ + '\n')
# f:/pycharm_project/pointnet_pointnet2_pytorch-master/me.py
for i in sys.path:
print(i)
# f:\pycharm_project\pointnet_pointnet2_pytorch-master
# f:\pycharm_project\pointnet_pointnet2_pytorch-master
# d:\pycharm\pycharm 2019.3.3\plugins\python\helpers\pycharm_display
# d:\anaconda3\envs\pytorch0.4\python36.zip
# d:\anaconda3\envs\pytorch0.4\dlls
# d:\anaconda3\envs\pytorch0.4\lib
# d:\anaconda3\envs\pytorch0.4
# d:\anaconda3\envs\pytorch0.4\lib\site-packages
# d:\anaconda3\envs\pytorch0.4\lib\site-packages\win32
# d:\anaconda3\envs\pytorch0.4\lib\site-packages\win32\lib
# d:\anaconda3\envs\pytorch0.4\lib\site-packages\pythonwin
# d:\pycharm\pycharm 2019.3.3\plugins\python\helpers\pycharm_matplotlib_backend
print('\n' + sys.path[0])
# f:\pycharm_project\pointnet_pointnet2_pytorch-master
注:當利用終端執行該檔案時,print(__file__)的結果和pycharm中不一樣,結果僅顯示當前檔案。
os.path.abspath(__file__) 獲取當前當前檔案的絕對路勁os.path.dirname()獲取當前檔案上一層目錄
注:終端執行結果與pycharm中不同。這是因為pycharm裡的絕對路勁,是pyharm自作主張增加的,終端裡面是不會有的。
# 將當前資料夾下的model資料夾新增到sys.path中
base_dir = os.path.dirname(os.path.abspath(__file__))
root_dir = base_dir
for i in sys.path:
print(i)
終端輸出結果:在實際開發中,預設包含了當前目錄為搜尋路徑,所以,當前目錄下的模組和子模組均可以正常訪問。但是若乙個模組需要import平級的不同目錄的模組,或者上級目錄裡面的模組,就可以通過修改path來實現。
新增執行檔案所在目錄的上層目錄進入sys.path。
import os
import sys
# print(__file__ + '\n')
## for i in sys.path:
# print(i)
## print('\n' + sys.path[0])
# print(os.path.dirname(__file__))
# print(os.path.abspath(__file__))
# base_dir = os.path.dirname((os.path.abspath(__file__)))
# print(base_dir)
# for i in sys.path:
# print(i)
# print()
## 新增執行檔案所在目錄的上層目錄進入sys.path
base_dir = os.path.dirname(sys.path[0])
root_dir = base_dir
for i in sys.path:
print(i)
# f:\pycharm_project\pointnet_pointnet2_pytorch-master
# f:\pycharm_project\pointnet_pointnet2_pytorch-master
# d:\pycharm\pycharm 2019.3.3\plugins\python\helpers\pycharm_display
# d:\anaconda3\envs\pytorch0.4\python36.zip
# d:\anaconda3\envs\pytorch0.4\dlls
# d:\anaconda3\envs\pytorch0.4\lib
# d:\anaconda3\envs\pytorch0.4
# d:\anaconda3\envs\pytorch0.4\lib\site-packages
# d:\anaconda3\envs\pytorch0.4\lib\site-packages\win32
# d:\anaconda3\envs\pytorch0.4\lib\site-packages\win32\lib
# d:\anaconda3\envs\pytorch0.4\lib\site-packages\pythonwin
# d:\pycharm\pycharm 2019.3.3\plugins\python\helpers\pycharm_matplotlib_backend
# f:\pycharm_project
import 導包三種方法
coding utf 8 python 27 xiaodeng 導包三種方法 常用 完整的匯入,也是最基本的方法 importre 自己定義別名,一般情況下盡量少用此辦法,不方便理解,也不方便其他人看 個人理解 import urllib as xiaodeng html xiaodeng.urlo...
導包時import花括號 的作用
1 不使用花括號 假如乙個b.js,想通過import語法引用模組a.js,那麼可以這麼寫 1.2.import afrom a 而上面的 生效的前提是,只有在如下a.js 中有預設匯出的 export default 語法時才會生效。也就是說 a.js export default 42在這種不使...
import 導包三種方法
coding utf 8 python 27 xiaodeng 導包三種方法 常用 完整的匯入,也是最基本的方法 importre 自己定義別名,一般情況下盡量少用此辦法,不方便理解,也不方便其他人看 個人理解 import urllib as xiaodeng html xiaodeng.urlo...