解決 VSCode 運行 Python 時 ModuleNotFoundError: No module named ‘open_webui‘ 問題

目錄

1. 問題原因分析

2. 解決思路

3. 解決步驟

3.1 打開或創建 .vscode/launch.json

3.2 添加調試配置

3.3 配置說明

3.4 運行測試

4. 總結


在使用 VSCode 調試 Python 項目時,我們經常會遇到類似下面的錯誤:

Exception has occurred: ModuleNotFoundError
No module named 'open_webui'File "D:\extracodes\open-webui\backend\open_webui\main.py", line 51, in <module>from open_webui.utils import logger
ModuleNotFoundError: No module named 'open_webui'

這類問題的本質是 Python 模塊搜索路徑(sys.path)中沒有包含你的項目源碼目錄
如果項目目錄結構不是純頂層包(例如 backend/open_webui),直接運行會找不到模塊。


1. 問題原因分析

Python 在導入模塊時,會從以下位置按順序查找:

  1. 當前運行文件所在目錄

  2. 環境變量 PYTHONPATH 中指定的目錄

  3. 標準庫路徑

  4. 已安裝的第三方包路徑(site-packages

當你在 VSCode 中直接運行 main.py 時,當前工作目錄(cwd)默認為打開的文件所在目錄,而不是 backend
這樣 open_webui 這個包就找不到了。


2. 解決思路

有三種常見方法可以解決這個問題:

  1. 調整 VSCode 的工作目錄(cwd

  2. 設置 PYTHONPATH 環境變量

  3. 在代碼中動態修改 sys.path(臨時方案)

本次采用的是 方法 1 + 方法 2 結合,通過 VSCode launch.json 配置,一勞永逸。


3. 解決步驟

3.1 打開或創建 .vscode/launch.json

在 VSCode 項目根目錄下創建 .vscode 文件夾,并新建 launch.json 文件。


3.2 添加調試配置

將以下配置粘貼進去,并根據實際情況修改 program 路徑:

{"configurations": [{"name": "Python Debugger: Current File","type": "debugpy","request": "launch","console": "integratedTerminal",// 要運行的 Python 文件路徑"program": "${workspaceFolder}/backend/open_webui/main.py",// 設置工作目錄為 backend(很關鍵)"cwd": "${workspaceFolder}/backend",// 設置 PYTHONPATH,讓 Python 能找到 open_webui 包"env": {"PYTHONPATH": "${workspaceFolder}/backend"}}]
}

3.3 配置說明

  • "program":你要運行的 Python 主入口文件

  • "cwd":調試運行時的工作目錄(當前工作路徑),這里必須指向 backend

  • "env":額外設置環境變量,這里將 PYTHONPATH 指向 backend,讓 Python 知道去這個目錄找包

  • "console": "integratedTerminal":讓輸出顯示在 VSCode 內置終端中


3.4 運行測試

保存配置文件后:

  1. 在 VSCode 左側選擇 運行與調試 面板

  2. 選擇剛才創建的 "Python Debugger: Current File"

  3. 點擊綠色運行按鈕或按 F5

此時程序會正常啟動,不再報 ModuleNotFoundError


4. 總結

通過調整 VSCode 的 工作目錄(cwd)PYTHONPATH 環境變量,我們可以解決大多數 包導入失敗 的問題。

優點:

  • 不污染全局環境變量

  • 不需要修改項目源碼

  • 對整個項目的調試都有效

適用場景:

  • 項目目錄不是純頂層包結構

  • 想要在 VSCode 里一鍵運行而不是手動設置命令行路徑


💡 小貼士
如果你的項目有多個入口文件,可以在 launch.json 里配置多個 configurations,分別對應不同的啟動文件,這樣可以隨時切換運行目標。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93226.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93226.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93226.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python基礎-數據結構

數據結構 Python提供了四種主要的內置數據結構&#xff1a;列表&#xff08;List&#xff09;、元組&#xff08;Tuple&#xff09;、字典&#xff08;Dictionary&#xff09;和集合&#xff08;Set&#xff09;。每種數據結構都有其特定的用途和特性。 Python數據結構概覽&…

NLP學習之Transformer(1)

初識 Transformer &#xff08;1&#xff09; 1.簡介 1.1主要特點&#xff1a; self-attention&#xff1a; 自注意力機制&#xff0c;Transformer的核心是自注意力機制&#xff0c;它允許模型在處理某個位置的輸入時&#xff0c;能夠直接與其他位置的輸入交互&#xff0c;而不…

C語言筆記6:C高級 part1

1.gcc 編譯器 編譯流程 預處理-》編譯》匯編》鏈接》 E 預處理的命令 S 編譯匯編代碼 -c匯編階段命令 -o 輸出對應的文件GDB調試工具2.作用域存儲分類// C高級部分知識多&#xff0c; 加上這周 我學的知識量有點爆炸。家里又有事情&#xff0c;這周末要回老家 爭取下周補齊吧。…

A12預裝app

在A12上預裝應用&#xff0c;出現了一個異常。在此記錄問題描述&#xff1a;在A12上預裝應用按照A13的預裝方案報錯&#xff0c;mk文件如下&#xff1a;LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS : optional LOCAL_MODULE : Tideen_PTT LOCAL_MODU…

termios 線程 poll epoll進化 二叉AVL紅黑樹

struct termios tio 是什么 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <termios.h>#define SERIAL_PORT "/dev/ttyS0" #define BUF_SIZE 256int main(v…

C++設計模式:類間關系

類封裝了數據和行為&#xff0c;是面向對象的重要組成部分&#xff0c;它是具有相同屬性、操作、關系的對象集合的總稱。在系統中&#xff0c;每個類都具有一定的職責&#xff0c;職責指的是類要完成什么樣子的功能&#xff0c;要承擔什么樣子的義務。一個類可以有多種職責&…

MSYS2+CMake配置C/C++開發環境

目錄一、MSYS2是什么1.1 核心架構與組件??1.1.1 背景介紹1.1.1.1 Cygwin1.1.1.2 MinGW和Mingw-w641.1.1.3MSYS和MSYS21.1.2 技術基礎??1.1.3 多環境支持??1.2 核心功能??1.2.1 類Unix開發環境??1.2.2 開發工具鏈??1.2.3 軟件倉庫與包管理??二、安裝和配置2.1 配置…

Vue 3 + TypeScript:package.json 示例 / 詳細注釋說明

一、示例 / 詳細注釋說明 {// 項目基礎信息"name": "vite-project", // 項目名稱&#xff08;建議使用 kebab-case 格式&#xff09;"private": true, // 標記為私有項目&#xff0c;避免意外發布到 npm"version": "1.0.…

SpatialVLM和SpatialRGPT論文解讀

目錄 一、SpatialVLM 1、概述 2、方法 3、實驗 二、SpatialRGPT 1、概述 2、方法 3、訓練方法 4、實驗 一、SpatialVLM 1、概述 SpatialVLM是最早的依賴傳統VLMs實現3D空間推理能力的論文&#xff0c;在24年1月由DeepMind團隊提出&#xff0c;當時對比的還是GPT4v&am…

理解GPU架構:基礎與關鍵概念

GPU 基礎概述&#xff1a;從圖形渲染到 AI 與高性能計算的核心 Graphics Processing Units&#xff08;GPU&#xff09;已從專用的圖形渲染硬件演進為 AI、科學計算與高性能任務的中堅力量。本文將介紹 GPU 架構的基礎知識&#xff0c;包括其組成部分、內存層次結構&#xff0c…

訂單狀態定時處理(Spring Task 定時任務)

訂單狀態定時處理 如果最后一秒剛好支付了咋辦?如何補償? 需要將支付狀態和訂單狀態一起考慮,或者直接使用狀態機 Spring Task 是Spring框架提供的任務調度工具,可以按照約定的時間自動執行某個代碼邏輯。 **定位:**定時任務框架 **作用:**定時自動執行某段Java代碼 …

職得AI簡歷-免費AI簡歷生成工具

本文轉載自&#xff1a;職得AI簡歷-免費AI簡歷生成工具 - Hello123工具導航 ** 一、核心功能解析 職得 AI 簡歷是 AI 驅動的智能求職平臺&#xff0c;通過深度學習算法分析百萬優質簡歷數據&#xff0c;提供從簡歷生成到面試準備的全流程服務&#xff0c;顯著提升求職競爭力。…

8.14 機器學習(1)

機器學習基礎一、什么是機器學習定義&#xff1a;讓計算機利用大量數據在特定任務上持續改進性能的過程&#xff0c;可以讓任務完成的更好。機器學習的領域很多。二、機器學習基本術語數據集、樣本、特征&#xff08;屬性&#xff09;、屬性空間、向量表示、訓練集&#xff08;…

給電腦升級內存,自檢太慢,以為出錯

公司電腦是16G內存&#xff0c;用虛擬機時非常吃力。于是跟領導說&#xff0c;買了32G內存和1T SSD。電腦有兩個SATA數據線&#xff0c;SATA電源頭只有一個。于是買了幾個1轉2&#xff0c;順利接上。把原來的16G拔下&#xff0c;換上32G內存。結果開機沒反應。心里就有點嘀咕&a…

Effective C++ 條款43:學習處理模板化基類內的名稱

Effective C 條款43&#xff1a;學習處理模板化基類內的名稱核心思想&#xff1a;模板化基類&#xff08;templatized base classes&#xff09;中的名稱在派生類模板中默認不可見&#xff0c;需要通過this->前綴、using聲明或顯式基類限定來引入。這是因為編譯器在解析模板…

Mybatis簡單練習注解sql和配置文件sql+注解形式加載+配置文件加載

項目結構 d:\test\runjar\data\static\data\mybatis_helloworld\Mybatis\ ├── lib\ │ ├── asm-3.3.1.jar │ ├── c3p0-0.9.1.2.jar │ ├── cglib-2.2.2.jar │ ├── commons-logging-1.1.1.jar │ ├── ehcache-core-2.6.8.jar │ ├── javassi…

抗日勝利80周年 | HTML頁面

飛翔的和平鴿&#xff1b;屹立的人民英雄紀念碑&#xff1b;倒下的日本國旗&#xff1b;旋轉的金色勛章無不代表著我們勝利了&#xff01;&#xff01;&#xff01;HTML源代碼&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta cha…

web仿寫網站

一、完成自己學習的官網&#xff0c;至少三個不同的頁面。1、界面1&#xff08;1&#xff09;代碼<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wid…

基于element-plus和IndexedDB數據庫的基礎表單

本文介紹了基于Vue 3和Element Plus的表單項目配置頁面實現。頁面包含搜索欄、操作按鈕、數據表格和分頁組件&#xff0c;使用IndexedDB進行本地數據存儲。主要功能包括&#xff1a;1) 通過模糊查詢搜索項目&#xff1b;2) 分頁顯示項目數據&#xff1b;3) 添加/編輯/刪除項目操…

paimon實時數據湖教程-主鍵表更新機制

在上一章&#xff0c;我們學習了 Paimon 如何保證每一次寫入的原子性和一致性。但數據倉庫的核心需求不僅是寫入&#xff0c;更重要的是更新。想象一個場景&#xff1a;我們需要實時更新用戶的最新信息&#xff0c;或者實時累加計算用戶的消費總額。傳統的 Hive 數據湖對此無能…