一、环境概览
采用 VSCode + Conda 的组合搭建Python开发环境:
| | |
|---|
| VSCode | |
| conda | 隔离性强,方便管理不同项目的Python版本和依赖 |
| debugpy | VSCode内置调试器,支持断点、条件断点、远程调试 |
| Black | |
| Ruff | |
| Pylance | |
二、Conda环境管理
2.1 安装Miniconda
mkdir -p ~/miniconda3wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.shbash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3rm ~/miniconda3/miniconda.sh~/miniconda3/bin/conda initsource ~/.bashrc
2.2 创建虚拟环境
# 创建环境(每个项目独立环境,避免依赖冲突)conda create -n myproject python=3.10 -y# 激活环境conda activate myproject# 查看已有环境conda env list
2.3 Conda安装CUDA/cuDNN
不同项目可能依赖不同CUDA版本,conda可以按环境独立管理:
# 查看可用版本conda search cudatoolkit --infoconda search cudnn --info# 安装指定版本(通过本地安装包,适用于离线环境)conda install --use-local /path/to/cudatoolkit-xxx.tar.bz2conda install --use-local /path/to/cudnn-xxx.tar.bz2# 或直接从源安装conda install cudatoolkit=11.8 -c conda-forgeconda install cudnn=8.9 -c conda-forge
2.4 安装深度学习框架
# PyTorch(以CUDA 11.8为例)pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 验证GPU可用性python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
2.5 Conda配合pip
conda和pip可以混用,注意顺序:
# 先用conda安装大框架包conda install numpy pandas scipy# 再用pip安装PyPI特有的包pip install einops timm
三、VSCode核心配置
3.1 必装扩展
| |
|---|
| Python | 微软官方,集成IntelliSense、调试、测试 |
Pylance (ms-python.vscode-pylance) | |
| Python Debugger | |
Black Formatter (ms-python.black-formatter) | |
| Ruff | |
| One Dark Pro | |
3.2 settings.json 关键配置
{ // Conda 环境路径(根据实际环境调整) "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python", "python.terminal.activateEnvironment":true, "python.terminal.executeInFileDir":true, // 类型检查 "python.analysis.typeCheckingMode": "basic", "python.analysis.autoImportCompletions":true, "python.analysis.extraPaths": [ "${workspaceFolder}/src" ], // 保存时自动格式化 "[python]": { "editor.formatOnSave":true, "editor.codeActionsOnSave": { "source.organizeImports": "explicit" }, "editor.defaultFormatter": "ms-python.black-formatter" }, // 自定义包路径(解决导入自定义模块报错) "terminal.integrated.env.linux": { "PYTHONPATH": "${workspaceFolder}/src" }, // 编辑器行为 "editor.rulers": [88, 120], "files.trimTrailingWhitespace":true, "files.insertFinalNewline":true}
3.3 VSCode选择Conda环境
- 1.
Ctrl+Shift+P → Python: Select Interpreter - 2. 列表中会显示所有conda环境(如
Python 3.10 ('myproject': conda))
如果未显示,可以在settings.json中手动添加路径:
"python.defaultInterpreterPath": "~/miniconda3/envs/myproject/bin/python"
四、调试配置
4.1 launch.json 配置
{ "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "debugpy", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode":true }, { "name": "Python: 带环境变量", "type": "debugpy", "request": "launch", "program": "${file}", "env": { "PYTHONPATH": "${workspaceFolder}/src:${workspaceFolder}/lib" }, "envFile": "${workspaceFolder}/.env" } ]}
4.2 调试Shell脚本启动的Python程序
当程序通过Shell脚本启动时,使用debugpy远程调试:
# 在Shell脚本中加入python -m debugpy --listen localhost:5678 --wait-for-client \ main.py \ --arg1 value1
然后在VSCode中配置attach调试:
{ "name": "Python: 附加到远程", "type": "debugpy", "request": "attach", "connect": { "host": "localhost", "port": 5678 }}
五、代码质量工具链
5.1 安装
pip install black isort ruff mypy
5.2 pyproject.toml 配置
[tool.black]line-length = 88target-version = ["py310"][tool.isort]profile = "black"line_length = 88[tool.ruff]target-version = "py310"line-length = 88[tool.ruff.lint]select = ["E", "F", "W", "I", "N", "UP", "B", "SIM"]ignore = ["E501"][tool.mypy]python_version = "3.10"ignore_missing_imports = true
六、推荐项目结构
my-project/├── .venv/ # 虚拟环境(不提交git)├── .vscode/│ ├── settings.json # VSCode配置│ └── launch.json # 调试配置├── src/│ └── my_package/│ ├── __init__.py│ ├── core.py│ └── utils.py├── tests/│ ├── __init__.py│ └── test_core.py├── .env # 环境变量(不提交git)├── .gitignore├── pyproject.toml # 项目配置(统一管理格式化/lint/类型检查)├── requirements.txt # 依赖└── README.md
七、常见问题
7.1 导入自定义模块报错
在 settings.json 或 launch.json 中配置 PYTHONPATH:
"terminal.integrated.env.linux": { "PYTHONPATH": "${workspaceFolder}/src"}
7.2 Conda环境切换不生效
检查VSCode左下角是否显示了正确的Python解释器,或手动执行 Python: Select Interpreter。
7.3 保存格式化与Lint冲突
推荐工作流:Black格式化 → isort排序 → Ruff检查 → mypy类型检查(手动运行)