Python 新增import 匯入路徑

2021-10-06 06:06:47 字數 4303 閱讀 5386

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...