Windows 上使用 vscode + mingw 调试 python 程序
Windows 上使用 vscode + mingw 调试 python 程序
目的:在 win10/11 上能用 vscode 在 Anaconda3 的某个虚拟环境下调试 py 程序,同时使用 mingw64 命令行工具(不使用 PowerShell)。
msys64 安装(mingw64) 安装
下载:msys2-x86_64-20250622.exe
安装到:C:\DEVPACK\msys64
然后打开 msys2 命令行,执行下面的命令,更新安装开发环境:
$ pacman -Syu
$ pacman -Su
$ pacman -S --needed base-devel mingw-w64-x86_64-toolchain
$ pacman -S zip git
根据实际情况,设置下面的系统环境变量(Win+R->sysdm.cpl->高级/环境变量/系统环境变量):
# 从windows继承环境变量
MSYS2_PATH_TYPE=inheritMSYS2_HOME=C:\DEVPACK\msys64
MSYS2_ROOT_BASH=/C/DEVPACK/msys64
Anaconda3 安装
下载 Anaconda3-2025.06-0-Windows-x86_64.exe
C:\DEVPACK:\Anaconda3
设置下面的系统环境变量:
ANACONDA3_HOME=C:\DEVPACK\Anaconda3
ANACONDA3_ROOT_BASH=/C/DEVPACK/Anaconda3
创建py虚拟环境:pytorch_env
conda env list
conda create -n pytorch_env python=3.12 -y
假设要激活的虚拟环境为:pytorch_env。创建虚拟环境文件:pytorch.env,全部内容如下:
#!/bin/bash
# 2025-05-19 for windows+mingw
# source pytorch_env.sh#--------------------------------
# 可选环境变量
#--------------------------------
##export HF_HUB_DISABLE_SYMLINKS_WARNING=1
##export HF_ENDPOINT="https://hf-mirror.com"# Windows 平台自动转为: D:/huggingface
##export HF_HOME=/d/huggingface
##export HF_MODELS=${HF_HOME}/models#--------------------------------
# 必须的设置
#--------------------------------
source "$ANACONDA3_BASH_ROOT/etc/profile.d/conda.sh"
conda activate pytorch_env
项目目录结构 (假设项目:aistock)
aistock/.git/.vscode/settings.jsonlaunch.json.gitignore.envstart.py
-
.env (可选)
# 使用 `python-dotenv` 库来管理环境变量,它允许我们从 `.env` 文件中读取环境变量并设置到当前环境中。它能使我们避免修改系统环境变量。# 安装:pip install python-dotenv# 用法:#----------------------------------------------# import os# from dotenv import load_dotenv# load_dotenv() # 默认加载当前目录下的.env文件# SECRET_KEY= os.environ['SECRET_KEY']# print('SECRET_KEY=', SECRET_KEY)#----------------------------------------------# 示例环境变量SECRET_KEY=a1e8bcb0f6f048bfd99b076c4996fa78
-
settings.json 完整内容:
{"editor.suggestSelection": "first","vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue","window.zoomLevel": 1,"git.ignoreLegacyWarning": true,"editor.formatOnSave": false,"editor.formatOnPaste": false,"editor.formatOnType": false,// 禁用所有格式化提供程序"editor.defaultFormatter": null,// 终端配置"terminal.integrated.profiles.windows": {"MINGW64": {"path": ["${env:MSYS2_ROOT_BASH}/usr/bin/bash.exe"],"icon": "terminal-bash","args": ["--login","-i"],"env": {"MSYSTEM": "MINGW64","CHERE_INVOKING": "1","CONTITLE": "MinGW x64","C_INCLUDE_PATH": "/mingw64/include","CPLUS_INCLUDE_PATH": "/mingw64/include","PATH": "/usr/bin;/mingw64/bin;${env:PATH}"}}},"terminal.integrated.defaultProfile.windows": "MINGW64",// 文件关联"files.associations": {"*.h": "c","*.c": "c","*.py": "python","*.java": "java","*.cpp": "cpp","*.cxx": "cpp","*.hpp": "cpp","*.hxx": "cpp","*.js": "javascript","*.ts": "typescript","*.json": "json","*.html": "html","*.css": "css","*.md": "markdown","*.xml": "xml","*.yaml": "yaml","*.yml": "yaml","*.sh": "shellscript","*.bash": "shellscript","*.txt": "plaintext","*.csv": "csv","*.log": "log","*.conf": "properties","*.ini": "properties","*.bat": "batch"},// CMake 配置"cmake.ignoreCMakeListsMissing": true,// ============================// Python 配置// ============================// 1. Python 解释器路径"python.defaultInterpreterPath": "${env:ANACONDA3_ROOT_BASH}/envs/pytorch_env/python.exe",// 2. 虚拟环境配置"python.venvPath": "${workspaceFolder}/.env","python.terminal.activateEnvironment": true,// 3. 强制使用 MINGW64 终端(关键设置)"python.terminal.launchArgs": ["--login", "-i"],"python.terminal.executeInFileDir": true,"python.terminal.activateEnvInCurrentTerminal": true,// 4. 终端集成设置"terminal.integrated.inheritEnv": true,"terminal.integrated.automationShell.windows": "${env:MSYS2_ROOT_BASH}/usr/bin/bash.exe",// 5. Python 特定终端设置"python.terminal.launchOptions": {"shellPath": "${env:MSYS2_ROOT_BASH}/usr/bin/bash.exe","shellArgs": ["--login", "-i"],"env": {"MSYSTEM": "MINGW64","PATH": "/usr/bin;/mingw64/bin;${env:PATH}"}},// 6. 调试器设置"debug.console.acceptFocusCommands": true,"debug.console.wordWrap": true,"debug.console.lineHeight": 1.2,"debug.console.fontFamily": "Consolas, 'Courier New', monospace","debug.console.fontSize": 13,// 7. Python 调试配置"python.debug.console": "integratedTerminal","python.debug.justMyCode": true,"python.debug.forceWindowsSubsystem": false,// Python 分析设置"python.analysis.typeCheckingMode": "basic",// 禁用所有格式化功能"python.formatting.provider": "none", // 关键:完全禁用格式化提供程序"[python]": {"editor.formatOnSave": false, // 确保保存时不格式化"editor.rulers": [120] // 保留120字符参考线},// 禁用所有行长度警告"python.linting.flake8Enabled": true,"python.linting.pylintEnabled": false,"flake8.args": ["--ignore=E501,W505,E231,E203","--max-line-length=999","--extend-ignore=E501"],"python.linting.flake8CategorySeverity.E": "Information", // 降低严重级别// 禁用语言服务器的行长检查"python.analysis.diagnosticSeverityOverrides": {"reportGeneralTypeIssues": "none","line-too-long": "none" // 确保 Pylance 不报告行长问题},// 可选:禁用所有 Python 提示和警告. 核选项:完全禁用所有 linting// "python.linting.enabled": false}
-
launch.json 完整内容
{"version": "0.2.0","configurations": [ {"name": "pytorch_env","type": "debugpy","python": "python.exe","request": "launch","program": "${file}","args": [],"cwd": "${workspaceFolder}","env": {"PATH": "${env:ANACONDA3_ROOT_BASH}/envs/pytorch_env:${env:PATH}" // 确保环境路径优先}}]}
调试项目:aistock
使用 mingw64 命令行工具:
运行程序:
cd /d/huggingface/scripts/aistock/
source pytorch.env
python start.py
使用 vscode 调试:
cd /d/huggingface/scripts/aistock/
code .打开 start.py,按 F5 调试即可。