Vscode 中 python模塊的導(dǎo)入問題
VSCode配置PYTHONPATH解決Python模塊導(dǎo)入問題
問題描述
在使用VSCode開發(fā)Python項(xiàng)目時(shí),經(jīng)常會(huì)遇到模塊導(dǎo)入錯(cuò)誤的問題。當(dāng)項(xiàng)目結(jié)構(gòu)較為復(fù)雜,包含多個(gè)層級(jí)的目錄時(shí),Python解釋器可能無法正確找到自定義模塊,導(dǎo)致ModuleNotFoundError或ImportError。
問題原因
Python解釋器在導(dǎo)入模塊時(shí),會(huì)按照以下順序搜索模塊:
- 當(dāng)前腳本所在目錄
PYTHONPATH環(huán)境變量中指定的目錄- Python安裝路徑中的標(biāo)準(zhǔn)庫目錄
查看當(dāng)前Python解釋器的模塊搜索路徑
import sys
paths = sys.path
# 遍歷當(dāng)前Python解釋器的模塊搜索路徑列表
for path in paths:
print(path)
終端輸出信息:
(base) PS E:\Projects\OCR-sdk> (D:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1) ; (conda activate base)
(base) PS E:\Projects\OCR-sdk> & D:\ProgramData\Anaconda3\python.exe e:/Projects/OCR-sdk/tests/path.py
e:\Projects\OCR-sdk\tests
D:\ProgramData\Anaconda3\python313.zip
D:\ProgramData\Anaconda3\DLLs
D:\ProgramData\Anaconda3\Lib
D:\ProgramData\Anaconda3
D:\ProgramData\Anaconda3\Lib\site-packages
D:\ProgramData\Anaconda3\Lib\site-packages\win32
D:\ProgramData\Anaconda3\Lib\site-packages\win32\lib
D:\ProgramData\Anaconda3\Lib\site-packages\Pythonwin
(base) PS E:\Projects\OCR-sdk>
路徑僅包含當(dāng)前python文件、系統(tǒng)環(huán)境變量和當(dāng)前python環(huán)境目錄,當(dāng)前項(xiàng)目根目錄不在Python的模塊搜索路徑中時(shí),所以跨目錄的模塊導(dǎo)入會(huì)失敗。
解決方法
通過配置VSCode的集成終端環(huán)境變量,將項(xiàng)目根目錄添加到PYTHONPATH中,讓Python解釋器能夠正確找到項(xiàng)目中的所有模塊。
配置步驟
修改用戶配置,通過ctrl+shift+p 打開用戶配置文件:

也可以修改當(dāng)前項(xiàng)目的工作區(qū)配置文件\.vscode\settings.json
在配置文件中添加如下配置:
{
"terminal.integrated.env.windows": {
// 設(shè)置 PYTHONPATH 環(huán)境變量為當(dāng)前工作區(qū)根目錄
"PYTHONPATH": "${workspaceFolder}"
}
}
配置說明
terminal.integrated.env.windows:針對(duì)Windows系統(tǒng)的集成終端環(huán)境變量配置PYTHONPATH:Python解釋器用于搜索模塊的環(huán)境變量${workspaceFolder}:VSCode內(nèi)置變量,表示當(dāng)前工作區(qū)的根目錄路徑
其他平臺(tái)配置
windows/Linux/macOS配置
{
"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder}"
},
"terminal.integrated.env.linux": {
"PYTHONPATH": "${workspaceFolder}"
},
"terminal.integrated.env.osx": {
"PYTHONPATH": "${workspaceFolder}"
}
}
驗(yàn)證配置是否生效
再次查看模塊搜索路徑
```python
import sys
paths = sys.path
for path in paths:
print
為了防止修改后未立即生效,可以在新終端里再次測試或者直接重啟Vscode
(base) PS E:\Projects\OCR-sdk> & D:\ProgramData\Anaconda3\python.exe e:/Projects/OCR-sdk/tests/path.py e:\Projects\OCR-sdk\tests E:\Projects\OCR-sdk D:\ProgramData\Anaconda3\python313.zip D:\ProgramData\Anaconda3\DLLs D:\ProgramData\Anaconda3\Lib D:\ProgramData\Anaconda3 D:\ProgramData\Anaconda3\Lib\site-packages D:\ProgramData\Anaconda3\Lib\site-packages\win32 D:\ProgramData\Anaconda3\Lib\site-packages\win32\lib D:\ProgramData\Anaconda3\Lib\site-packages\Pythonwin
如果配置成功,那么項(xiàng)目根目錄(例如:E:\Projects\OCR-sdk)應(yīng)該出現(xiàn)在sys.path的輸出中。
注意
- 重啟終端:修改配置后需要重新打開集成終端才能生效
- 多項(xiàng)目支持:每個(gè)項(xiàng)目可以有獨(dú)立的
.vscode/settings.json配置 - 路徑分隔符:在Windows中使用分號(hào)
;分隔多個(gè)路徑,在macOS/Linux中使用冒號(hào):
擴(kuò)展配置
如果需要添加多個(gè)路徑到PYTHONPATH:
{
"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder};${workspaceFolder}\\src;${workspaceFolder}\\lib"
}
}
到此這篇關(guān)于Vscode 中 python模塊的導(dǎo)入問題的文章就介紹到這了,更多相關(guān)vscode python模塊導(dǎo)入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用python對(duì)mysql表做全局模糊搜索并分頁實(shí)例
這篇文章主要介紹了利用python對(duì)mysql表做全局模糊搜索并分頁實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
用Python 爬取貓眼電影數(shù)據(jù)分析《無名之輩》
這篇文章主要介紹了用Python 爬取貓眼電影數(shù)據(jù)分析《無名之輩》,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Python異步編程從協(xié)程到異步框架實(shí)踐指南
Python的異步編程提供了一種更輕量級(jí)的并發(fā)方案,能夠在單線程內(nèi)實(shí)現(xiàn)高并發(fā),大幅提升I/O密集型應(yīng)用的性能,本文將從協(xié)程的基礎(chǔ)概念講起,深入講解asyncio的核心原理和實(shí)戰(zhàn)應(yīng)用,幫助讀者建立完整的異步編程知識(shí)體系2026-05-05
Python 檢查數(shù)組元素是否存在類似PHP isset()方法
isset方法來檢查數(shù)組元素是否存在,在Python中無對(duì)應(yīng)函數(shù),在Python中一般可以通過異常來處理數(shù)組元素不存在的情況,而無須事先檢查2014-10-10
linux環(huán)境下安裝pyramid和新建項(xiàng)目的步驟
這篇文章簡單介紹了linux環(huán)境下安裝pyramid和新建項(xiàng)目的步驟,大家參考使用2013-11-11
python的schedule定時(shí)任務(wù)模塊二次封裝方法
今天小編就為大家分享一篇python的schedule定時(shí)任務(wù)模塊二次封裝方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
python中scipy.stats產(chǎn)生隨機(jī)數(shù)實(shí)例講解
在本篇文章里小編給大家分享的是一篇關(guān)于python中scipy.stats產(chǎn)生隨機(jī)數(shù)實(shí)例講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-02-02
python轉(zhuǎn)化excel數(shù)字日期為標(biāo)準(zhǔn)日期操作
這篇文章主要介紹了python轉(zhuǎn)化excel數(shù)字日期為標(biāo)準(zhǔn)日期操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07

