VScode中不同目錄間python庫函數(shù)的調(diào)用
問題描述
vscode中跨目錄的模塊調(diào)用遠(yuǎn)不如pycharm中的來的簡單,在pycharm中即使是不同庫文件夾中子函數(shù)也可以進(jìn)行互相調(diào)用。而在VScode中則需要我們手動向其中添加依賴路徑。如下相同的文件結(jié)構(gòu),在pycharm中可以簡單的在model_arc_pesudo中導(dǎo)入model中的模型,而在VScode中則會提示ModuleNotFoundError: No module named 'model',因此我們需要手動導(dǎo)入路徑。

理論分析
首先我們從依賴路徑角度來看看二者的異同,使用如下代碼輸出依賴路徑:
import sys
print("import path!!!!!!")
print(sys.path)
pycharm中輸出的依賴路徑為:[xxx, ..., 'E:\\python_program\\infant_cognitive',..., xxx]
其中infant_cognitive項目所在整個文件夾的名字,而vscode中輸出的依賴路徑則不包括這一項,也就無法自動的找到其子文件夾中model,從而無法通過語句from model.PSDCNCluster_2 import PSDCN。
解決方案
既然sys.path未包含要導(dǎo)入的文件夾,那么直接導(dǎo)入就行,通過在代碼最前方添加如下代碼實現(xiàn):
import sys target_path="./" sys.path.append(target_path) print(sys.path)
此處有一個隱含的知識點,在vscode中默認(rèn)的根路徑是項目路徑1,而非當(dāng)前py文件的路徑,所以直接使用"./"就可通過相對路徑來導(dǎo)入infant_cognitive下所有的文件夾。如果需要導(dǎo)入其他文件夾下的模塊,只需要對target_path進(jìn)行修改即可,倘若對于相對路徑的寫法以及os, sys模塊的使用不夠熟練,建議是直接使用絕對路徑,不易出錯。
還有一點值得注意的是,由于此處使用的導(dǎo)入方式是module.function(from model.PSDCNCluster_2 import PSDCN),那么實際上我們需要導(dǎo)入的是module的上一級路徑,也就是infant_cognitive,而非導(dǎo)入infant_cognitive\model,這樣的話仍然會報錯。如果是使用module.function形式導(dǎo)入的話,需要注意要導(dǎo)入的是module的上一級文件夾,不再是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庫函數(shù)的調(diào)用的文章就介紹到這了,更多相關(guān)VScode不同目錄python函數(shù)調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python爬蟲框架Scrapy基本應(yīng)用學(xué)習(xí)教程
這篇文章主要為大家介紹了python爬蟲框架Scrapy的基本應(yīng)用學(xué)習(xí)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
python GUI庫圖形界面開發(fā)之PyQt5滾動條控件QScrollBar詳細(xì)使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5滾動條控件QScrollBar詳細(xì)使用方法與實例,需要的朋友可以參考下2020-03-03
Python-OpenCV實戰(zhàn):利用 KNN 算法識別手寫數(shù)字
K-最近鄰(KNN)是監(jiān)督學(xué)習(xí)中最簡單的算法之一,KNN可用于分類和回歸問題。本文將為大家介紹的是通過KNN算法實現(xiàn)識別手寫數(shù)字。文中的示例代碼介紹詳細(xì),需要的朋友可以參考一下2021-12-12

