VScode中不同目錄間python庫(kù)函數(shù)的調(diào)用
問(wèn)題描述
vscode中跨目錄的模塊調(diào)用遠(yuǎn)不如pycharm中的來(lái)的簡(jiǎn)單,在pycharm中即使是不同庫(kù)文件夾中子函數(shù)也可以進(jìn)行互相調(diào)用。而在VScode中則需要我們手動(dòng)向其中添加依賴(lài)路徑。如下相同的文件結(jié)構(gòu),在pycharm中可以簡(jiǎn)單的在model_arc_pesudo
中導(dǎo)入model
中的模型,而在VScode中則會(huì)提示ModuleNotFoundError: No module named 'model'
,因此我們需要手動(dòng)導(dǎo)入路徑。
理論分析
首先我們從依賴(lài)路徑角度來(lái)看看二者的異同,使用如下代碼輸出依賴(lài)路徑:
import sys print("import path!!!!!!") print(sys.path)
pycharm中輸出的依賴(lài)路徑為:[xxx, ..., 'E:\\python_program\\infant_cognitive',..., xxx]
其中infant_cognitive
項(xiàng)目所在整個(gè)文件夾的名字,而vscode中輸出的依賴(lài)路徑則不包括這一項(xiàng),也就無(wú)法自動(dòng)的找到其子文件夾中model
,從而無(wú)法通過(guò)語(yǔ)句from model.PSDCNCluster_2 import PSDCN
。
解決方案
既然sys.path
未包含要導(dǎo)入的文件夾,那么直接導(dǎo)入就行,通過(guò)在代碼最前方添加如下代碼實(shí)現(xiàn):
import sys target_path="./" sys.path.append(target_path) print(sys.path)
此處有一個(gè)隱含的知識(shí)點(diǎn),在vscode中默認(rèn)的根路徑是項(xiàng)目路徑1,而非當(dāng)前py
文件的路徑,所以直接使用"./"
就可通過(guò)相對(duì)路徑來(lái)導(dǎo)入infant_cognitive
下所有的文件夾。如果需要導(dǎo)入其他文件夾下的模塊,只需要對(duì)target_path
進(jìn)行修改即可,倘若對(duì)于相對(duì)路徑的寫(xiě)法以及os, sys
模塊的使用不夠熟練,建議是直接使用絕對(duì)路徑,不易出錯(cuò)。
還有一點(diǎn)值得注意的是,由于此處使用的導(dǎo)入方式是module.function(from model.PSDCNCluster_2 import PSDCN
),那么實(shí)際上我們需要導(dǎo)入的是module的上一級(jí)路徑,也就是infant_cognitive
,而非導(dǎo)入infant_cognitive\model
,這樣的話(huà)仍然會(huì)報(bào)錯(cuò)。如果是使用module.function形式導(dǎo)入的話(huà),需要注意要導(dǎo)入的是module的上一級(jí)文件夾,不再是sys.append("module")
?;蛘呤鞘褂?code>target_path="./model"直接搭配from PSDCNCluster_2 import PSDCN
,具體可以去查閱python中的import機(jī)制2。
參考文獻(xiàn)
關(guān)于Python的import機(jī)制原理 ??
到此這篇關(guān)于VScode中不同目錄間python庫(kù)函數(shù)的調(diào)用的文章就介紹到這了,更多相關(guān)VScode不同目錄python函數(shù)調(diào)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python自動(dòng)化實(shí)現(xiàn)的簡(jiǎn)單使用
本文主要介紹了python自動(dòng)化實(shí)現(xiàn)的簡(jiǎn)單使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06基于python實(shí)現(xiàn)簡(jiǎn)單C/S模式代碼實(shí)例
這篇文章主要介紹了基于python實(shí)現(xiàn)簡(jiǎn)單C/S模式代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09python使用pywinauto驅(qū)動(dòng)微信客戶(hù)端實(shí)現(xiàn)公眾號(hào)爬蟲(chóng)
這個(gè)項(xiàng)目是通過(guò)pywinauto控制windows(win10)上的微信PC客戶(hù)端來(lái)實(shí)現(xiàn)公眾號(hào)文章的抓取。代碼分成server和client兩部分。server接收client抓取的微信公眾號(hào)文章,并且保存到數(shù)據(jù)庫(kù)。另外server支持簡(jiǎn)單的搜索和導(dǎo)出功能。client通過(guò)pywinauto實(shí)現(xiàn)微信公眾號(hào)文章的抓取。2021-05-05在python里使用await關(guān)鍵字來(lái)等另外一個(gè)協(xié)程的實(shí)例
這篇文章主要介紹了在python里使用await關(guān)鍵字來(lái)等另外一個(gè)協(xié)程的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05python在Windows8下獲取本機(jī)ip地址的方法
這篇文章主要介紹了python在Windows8下獲取本機(jī)ip地址的方法,涉及Python中socket包相關(guān)函數(shù)的使用技巧,需要的朋友可以參考下2015-03-03python銀行系統(tǒng)實(shí)現(xiàn)源碼
這篇文章主要為大家詳細(xì)介紹了python銀行系統(tǒng)實(shí)現(xiàn)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10