一文詳解如何從根本上優(yōu)雅地解決VSCode中的Python模塊導(dǎo)入問題
整體概述:
在我嘗試運(yùn)行test_deal_file.py
時(shí),我遇到了一個(gè)ModuleNotFoundError
錯(cuò)誤,Python告訴我找不到名為controllers
的模塊。這意味著我無法從deal_file.py
中導(dǎo)入read_excel
函數(shù)。為了解決這個(gè)問題,我嘗試了幾種方法。
首先,我使用了相對(duì)導(dǎo)入,這在不改變當(dāng)前工作目錄的情況下是有效的,但一旦我切換了目錄,這個(gè)方法就不行了。
接著,我嘗試動(dòng)態(tài)地將當(dāng)前工作目錄添加到sys.path
中。
這樣做雖然有效,但我覺得這種方法不夠優(yōu)雅。所以,我決定采取一種更徹底的解決方案。
我通過修改 VSCode 的settings.json
文件,設(shè)置了PYTHONPATH
環(huán)境變量,確保了我的項(xiàng)目路徑my_project
被加入到模塊搜索路徑中。
我在settings.json中為不同的操作系統(tǒng)配置了terminal.integrated.env` 部分,然后重啟了虛擬環(huán)境和集成終端。重新運(yùn)行我的文件后,問題終于解決了。通過這篇文章,我想和大家分享如何以一種更優(yōu)雅的方式解決 Python 項(xiàng)目中的模塊導(dǎo)入問題。
同時(shí),我也介紹了如何在 VSCode 中管理項(xiàng)目環(huán)境變量和運(yùn)行路徑,這對(duì)于解決開發(fā)過程中的環(huán)境配置問題非常有幫助。希望我的經(jīng)驗(yàn)?zāi)艹蔀槠渌_發(fā)者在面對(duì)類似問題時(shí)的寶貴資源。
我的問題解決過程
(想直接看解決教程的直接跳到下一個(gè)標(biāo)題內(nèi)容)我的項(xiàng)目結(jié)構(gòu)是這樣的
my_project/
├── controllers/
│ ├── __init__.py
│ └── deal_file.py
└── tests/
├── __init__.py
└── test_deal_file.py
結(jié)果運(yùn)行test_deal_file.py會(huì)出現(xiàn)報(bào)錯(cuò)信息:
# 報(bào)錯(cuò)信息 from controllers.deal_file import read_excel ModuleNotFoundError: No module named 'controllers'
我嘗試了引用改成from ..controllers.deal_file import read_excel
,terminal不切換目錄可以運(yùn)行成功,但切換目錄后還是運(yùn)行失敗
我又嘗試了
import sys import os sys.path.append(os.getcwd())
但是說實(shí)話,不是很美觀
我決定從根本上解決這個(gè)問題。
首先我打印我所有運(yùn)行路徑
import sys paths = sys.path for path in paths: print(path)
輸出結(jié)果果然,不包含我my_project
的路徑。如何把my_project路徑添加到系統(tǒng)運(yùn)行路徑呢?方法如下:
vscode 解決模塊導(dǎo)入問題的流程
1. 打開設(shè)置界面在 VSCode 中,您可以通過點(diǎn)擊左下角的齒輪圖標(biāo)然后選擇 “Settings” 來打開設(shè)置界面。
另一種方式是使用快捷鍵 Ctrl + ,(在 Mac 上是 Cmd + ,)直接打開設(shè)置界面。
2. 選擇合適的工作區(qū)打開setting界面后,上面有三個(gè)選項(xiàng),對(duì)應(yīng)著三種級(jí)別的設(shè)置文件工作區(qū)(workspace)、遠(yuǎn)程(remote)和用戶(user)。每個(gè)級(jí)別的設(shè)置都有其特定的用途和作用范圍。
用戶設(shè)置(User settings): 位于全局級(jí)別,適用于您計(jì)算機(jī)上的所有 VSCode 實(shí)例。 路徑通常在
~/.config/Code/User/settings.json(Unix/Linux)或
%APPDATA%\Code\User\settings.json(Windows)。 用于存儲(chǔ)您希望在所有項(xiàng)目和環(huán)境中使用的全局配置。
工作區(qū)設(shè)置(Workspace settings): 特定于當(dāng)前打開的工作區(qū)或項(xiàng)目。 路徑通常在工作區(qū)根目錄下的 .vscode/settings.json 文件中。 用于存儲(chǔ)針對(duì)特定項(xiàng)目或工作區(qū)的配置,這些配置不會(huì)影響其他項(xiàng)目。
遠(yuǎn)程設(shè)置(Remote settings): 特定于遠(yuǎn)程開發(fā)環(huán)境,例如通過 SSH 或容器連接的遠(yuǎn)程服務(wù)器。 路徑通常在 .vscode-remote/settings.json 文件中,這個(gè)文件位于您的本地工作區(qū)目錄下。 用于存儲(chǔ)針對(duì)遠(yuǎn)程開發(fā)環(huán)境的配置,如
SSH 連接設(shè)置、容器設(shè)置等。
現(xiàn)在你需要選擇適合你的設(shè)置文件:
如果環(huán)境變量?jī)H適用于特定項(xiàng)目,您應(yīng)該在工作區(qū)設(shè)置文件中添加它們。
如果環(huán)境變量需要在所有項(xiàng)目中使用,您應(yīng)該在用戶設(shè)置文件中添加它們。
如果環(huán)境變量是針對(duì)遠(yuǎn)程開發(fā)環(huán)境的,您應(yīng)該在遠(yuǎn)程設(shè)置文件中添加它們。
3. 打開對(duì)應(yīng)工作區(qū)的setting.json頁(yè)面往下滑找到Edit in setting.json,點(diǎn)擊打開
4. 編輯setting.json接下來你要修改這個(gè)文件
下面內(nèi)容復(fù)制到你的setting.json文件中,并保存
{ "terminal.integrated.env.windows": { "PYTHONPATH": "/path/to/your/project" }, "terminal.integrated.env.linux": { "PYTHONPATH": "/path/to/your/project" }, "terminal.integrated.env.osx": { "PYTHONPATH": "/path/to/your/project" } }
重啟虛擬環(huán)境
Unix/Linux 系統(tǒng):source /path/to/venv/bin/activate
Windows 系統(tǒng):\path\to\venv\Scripts\activate
關(guān)閉terminal集成終端
在 VSCode 中,關(guān)閉當(dāng)前打開的集成終端。打開新的集成終端:
通過點(diǎn)擊 VSCode 頂部的 “Terminal” 菜單或者使用快捷鍵 Ctrl+ (在 Mac 上是Cmd+ ) 來打開一個(gè)新的集成終端窗口。重新運(yùn)行你的文件
可以看到你的項(xiàng)目路徑已經(jīng)添加到環(huán)境,項(xiàng)目也可以正常運(yùn)行了??
總結(jié)
到此這篇關(guān)于從根本上優(yōu)雅地解決VSCode中的Python模塊導(dǎo)入問題的文章就介紹到這了,更多相關(guān)VSCode中Python模塊導(dǎo)入問題解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Flask框架利用Echarts實(shí)現(xiàn)繪制圖形
echarts是百度推出的一款開源的基于JavaScript的可視化圖表庫(kù),該開發(fā)庫(kù)目前發(fā)展非常不錯(cuò),且支持各類圖形的繪制可定制程度高。如下演示案例中,將分別展示運(yùn)用該繪圖庫(kù)如何前后端交互繪制(餅狀圖,柱狀圖,折線圖)這三種最基本的圖形,需要的可以參考一下2022-10-10python內(nèi)置模塊OS?實(shí)現(xiàn)SHELL端文件處理器
這篇文章主要介紹了python內(nèi)置模塊OS實(shí)現(xiàn)SHELL端文件處理器,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09Python小白必備的8個(gè)最常用的內(nèi)置函數(shù)(推薦)
這篇文章主要介紹了Python常用的內(nèi)置函數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04python PyQt5中單行文本輸入控件QLineEdit用法詳解
在PyQt5的GUI編程中,QLineEdit控件是一個(gè)用于輸入和編輯單行文本的部件,它提供了豐富的功能和靈活性,可以輕松地實(shí)現(xiàn)用戶輸入的捕獲、驗(yàn)證和格式化等功能,本文將通過實(shí)際案例詳細(xì)介紹QLineEdit控件的常用方法,需要的朋友可以參考下2024-08-08python多進(jìn)程實(shí)現(xiàn)文件下載傳輸功能
這篇文章主要為大家詳細(xì)介紹了python多進(jìn)程實(shí)現(xiàn)文件下載傳輸功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07基于python實(shí)現(xiàn)操作redis及消息隊(duì)列
這篇文章主要介紹了基于python操作redis及消息隊(duì)列,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08解決Django響應(yīng)JsonResponse返回json格式數(shù)據(jù)報(bào)錯(cuò)問題
這篇文章主要介紹了解決Django響應(yīng)JsonResponse返回json格式數(shù)據(jù)報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08