1. 项目概述与核心价值最近在帮几个刚接触Linux开发环境的朋友配置机器发现很多人卡在了第一步如何在Ubuntu 20.04上搭建一个顺手的Python开发环境。虽然网上教程不少但要么步骤零散要么只讲安装不讲配置真正能开箱即用的完整方案并不多。我自己从Ubuntu 16.04一路用到22.04在VS Code上写Python也有四五年了期间踩过不少坑也总结了一套高效稳定的配置流程。这篇文章就是把我这套“流水线”作业分享出来。它不仅仅是一个“安装-运行”的步骤清单更会深入解释每个环节背后的考量。比如为什么在2024年我们依然推荐使用Ubuntu 20.04 LTS作为稳定的开发基线VS Code的哪些插件组合能真正提升Python开发效率而不是徒增混乱Python环境管理是直接用系统Python还是上pyenv或conda这些问题我都会结合实战经验给出答案。无论你是刚从Windows/macOS转向Linux的开发者还是需要在实验室服务器、云主机上配置环境的科研人员甚至是运维同学需要为团队准备标准开发镜像这套方案都能提供一个坚实、可复现的起点。我们的目标是在一台全新的Ubuntu 20.04系统上从零开始搭建一个功能完整、调试顺畅、扩展性强的Python开发工作站。2. 环境准备与系统基础配置在开始安装任何软件之前我们需要确保系统处于一个良好的初始状态。Ubuntu 20.04 LTSFocal Fossa是一个长期支持版本官方支持到2025年4月这意味着它有长达五年的安全更新和维护非常适合作为稳定的开发基础。很多人会问为什么不直接用最新的22.04或24.04对于生产环境和追求稳定性的开发LTS版本经过更长时间的测试社区支持包括各种教程、问题解决方案也最为丰富能避免很多新版本才有的“惊喜”。2.1 系统更新与基础工具安装首先打开终端快捷键CtrlAltT。第一件事永远是更新软件包列表并升级现有软件。这能确保我们从一个最新的基础开始避免因旧版库导致的依赖冲突。sudo apt update sudo apt upgrade -y这个命令中sudo是获取管理员权限apt是Ubuntu的包管理工具。update是刷新远程仓库的软件包索引upgrade则是根据索引升级所有可升级的软件包。-y参数表示自动回答“yes”省去确认步骤。这个过程可能会花几分钟取决于网络速度和更新包的数量。接下来安装一些开发过程中必不可少的基础工具。这些工具并非Python或VS Code直接所需但能极大提升我们在终端下的工作效率。sudo apt install -y curl wget git build-essential software-properties-commoncurl wget命令行下载工具后续下载VS Code安装包、脚本等都会用到。git版本控制工具必不可少。无论是拉取自己的代码还是克隆开源项目都离不开它。build-essential这是一个元软件包包含了编译C/C程序所需的基础工具链如gcc, g, make。即使你只写Python很多Python包的底层依赖如某些科学计算库在通过pip从源码编译安装时也需要这些工具。software-properties-common它提供了add-apt-repository命令方便我们添加第三方PPAPersonal Package Archive软件源比如后续可能会用到的特定版本Python的源。注意在服务器或云主机环境中如果系统是最小化安装Minimal Install可能连sudo都没有。这时需要先以root用户登录执行apt install sudo然后将你的用户添加到sudo组usermod -aG sudo your_username然后重新登录生效。2.2 Python环境决策系统Python还是版本管理这是配置Python环境时第一个关键决策点。Ubuntu 20.04默认预装了Python 3.8.10。你可以通过python3 --version查看。直接使用系统Python是最简单的但存在两个潜在问题权限问题使用sudo pip install安装全局包可能污染系统环境影响系统组件的正常运行有些系统工具依赖特定版本的Python包。版本僵化你被锁定在Python 3.8。如果项目需要3.9、3.10或3.11的新特性就无法满足。因此对于严肃的Python开发我强烈推荐使用Python版本管理工具。主流选择有两个pyenv轻量级只做Python版本管理非常纯粹。适合只需要切换Python解释器版本的场景。Anaconda/Miniconda一个强大的数据科学平台除了Python版本还管理着庞大的预编译软件包conda包和虚拟环境。适合数据科学、机器学习领域因为很多复杂的科学计算库如NumPy, SciPy, TensorFlow在conda上安装更省心。对于大多数通用Python开发Web后端、自动化脚本、工具开发等pyenv是更优雅的选择。它不会带来conda那样庞大的生态和偶尔的依赖冲突。下面我们以pyenv为例进行安装。首先安装pyenv的依赖sudo apt install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev这些是编译Python源码所必需的各种开发库。缺少它们会导致后续pyenv install编译失败。然后使用官方提供的一键安装脚本安装pyenvcurl https://pyenv.run | bash这个脚本会将pyenv克隆到你的~/.pyenv目录并自动修改shell配置文件如~/.bashrc。安装完成后需要重启终端或者执行以下命令使配置生效source ~/.bashrc现在我们可以用pyenv安装一个比系统更新、也更常用的Python版本比如Python 3.10.13pyenv install 3.10.13这个过程是下载Python源码并编译需要一些时间。完成后将其设置为全局默认版本pyenv global 3.10.13验证一下python --version应该显示Python 3.10.13。注意这里直接使用python命令即可pyenv会通过垫片shim机制自动指向你设置的版本。实操心得pyenv install如果下载很慢可以设置国内镜像加速。先设置环境变量export PYTHON_BUILD_MIRROR_URLhttps://mirrors.huaweicloud.com/python/再执行安装命令速度会快很多。这个镜像站提供了完整的Python源码包。3. Visual Studio Code的安装与核心配置VS Code已经成为许多开发者的首选编辑器尤其在Python领域其体验甚至不输于一些专业的IDE。在Linux上我们有几种安装方式通过Snap、通过官方.deb包、或者通过添加微软的APT仓库。我推荐通过官方.deb包或APT仓库安装因为Snap版本在文件系统权限、主题集成和启动速度上有时会遇到一些小问题。3.1 通过官方仓库安装VS Code这是最推荐的方式因为它能方便地接收自动更新。首先导入微软的GPG密钥用于验证软件包的完整性wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor packages.microsoft.gpg sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/接着添加VS Code的APT仓库sudo sh -c echo deb [archamd64,arm64,armhf signed-by/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main /etc/apt/sources.list.d/vscode.list然后更新包列表并安装VS Codesudo apt update sudo apt install -y code # 或者 code-insiders 安装 Insider 版本安装完成后你可以在应用菜单中找到“Visual Studio Code”也可以在终端直接输入code命令启动。第一次启动可能会稍慢因为它正在创建必要的用户配置目录。3.2 基础配置与必要插件安装VS Code的强大之处在于其丰富的扩展生态系统。对于Python开发有几个插件是“必装”的它们构成了高效开发的核心骨架。Python (ms-python.python)微软官方出品Python开发的核心插件。提供智能补全IntelliSense、代码导航、格式化、调试、测试、Jupyter笔记本支持等几乎所有功能。安装后VS Code会自动识别你的Python解释器。Pylance (ms-python.vscode-pylance)这是Python语言服务器通常安装Python插件时会推荐你一并安装。它提供了超快的代码补全、类型检查基于类型注解、自动导入等功能体验远超旧的Jedi引擎。务必安装。Python Indent (KevinRose.vsc-python-indent)一个专门改善Python缩进体验的插件。在回车、粘贴代码时能智能地保持正确的缩进对于Python这种依赖缩进的语言来说非常实用。Code Runner (formulahendry.code-runner)虽然不是Python专用但它允许你一键运行多种语言的代码片段或文件。对于快速测试一小段Python脚本非常方便快捷键是CtrlAltN。GitLens (eamodio.gitlens)如果你使用Git这个插件将Git超级能力集成到编辑器中。可以直观地看到每一行代码是谁、在什么时候、为什么修改的Blame方便代码审查和追溯。安装插件非常简单。打开VS Code点击左侧活动栏的扩展图标或按CtrlShiftX在搜索框中输入插件名称点击安装即可。注意事项插件不是越多越好。每安装一个插件都会增加内存占用和启动时间。只安装你真正需要的。上述5个是Python开发的“基础套餐”其他如Docker、YAML、Markdown插件等可以根据你的具体项目需求按需添加。3.3 关键用户设置与工作区配置VS Code的配置分为用户设置全局生效和工作区设置仅对当前文件夹生效。我习惯先配置好用户设置建立一个舒适的全局基线。按CtrlShiftP打开命令面板输入“Preferences: Open User Settings (JSON)”选择它。这会打开settings.json文件。以下是我推荐加入的一些配置{ // 编辑器通用设置 editor.fontSize: 14, editor.fontFamily: Fira Code, Droid Sans Mono, monospace, // 推荐使用等宽字体Fira Code有连字特性 editor.fontLigatures: true, // 启用连字让 -, 等符号看起来更美观 editor.formatOnSave: true, // 保存时自动格式化保持代码风格统一 editor.codeActionsOnSave: { source.organizeImports: true // 保存时自动整理import语句需语言服务器支持 }, files.autoSave: afterDelay, // 自动保存防止意外丢失 files.autoSaveDelay: 1000, // Python 特定设置 python.defaultInterpreterPath: ${workspaceFolder}/.venv/bin/python, // 优先使用项目内的虚拟环境 python.terminal.activateEnvironment: true, // 在终端中自动激活虚拟环境 python.languageServer: Pylance, // 指定使用Pylance语言服务器 python.analysis.typeCheckingMode: basic, // 开启基础类型检查帮助发现潜在错误 python.analysis.autoImportCompletions: true, // 自动补全import [python]: { // 仅对Python文件生效的设置 editor.defaultFormatter: ms-python.black-formatter, // 使用Black作为默认格式化工具 editor.formatOnSave: true, editor.codeActionsOnSave: { source.organizeImports: explicit } }, // 终端设置 terminal.integrated.defaultProfile.linux: bash, // 默认使用bash terminal.integrated.fontSize: 13, }重点解释几个关键设置python.defaultInterpreterPath这个设置非常有用。它告诉VS Code当打开一个工作区时优先在项目根目录的.venv文件夹里寻找Python解释器。这和我们接下来要讲的虚拟环境实践完美契合。python.terminal.activateEnvironment当你在VS Code内置终端Ctrl中打开时如果检测到虚拟环境会自动执行source .venv/bin/activate让你直接处于正确的环境中。[python]这是一个语言特定设置块。里面指定了Python文件的默认格式化工具为Black。Black是一个“毫不妥协”的代码格式化工具它能自动将你的代码格式化为符合PEP 8的风格省去无数关于代码风格的争论。你需要先安装Black插件ms-python.black-formatter或通过pip安装black。4. Python虚拟环境与依赖管理实战这是Python开发中最重要也最容易被新手忽视的一环。虚拟环境Virtual Environment为每个项目创建一个独立的Python运行环境包括独立的解释器如果你用pyenv则是指向特定版本和独立的包安装目录。这样做的好处是项目隔离项目A依赖Django 3.2项目B依赖Django 4.2它们互不干扰。环境纯净避免全局Python包的混乱也便于通过requirements.txt精确复现环境。便于部署可以轻松打包整个虚拟环境虽然不推荐但某些场景有用。4.1 创建并激活虚拟环境假设我们的项目目录是~/projects/my_python_app。cd ~/projects/my_python_app python -m venv .venv这条命令使用当前Python解释器由pyenv global设置这里是3.10.13在项目根目录下创建一个名为.venv的虚拟环境文件夹。使用.venv作为名称是一个广泛遵循的约定并且它通常是.gitignore文件忽略的对象不会提交到版本库。创建完成后需要激活这个环境source .venv/bin/activate激活后你的终端提示符前通常会显示(.venv)表示你正处在这个虚拟环境中。此时python和pip命令都指向虚拟环境内的版本所有通过pip install安装的包都会被装到.venv/lib/python3.10/site-packages/下与系统完全隔离。在VS Code中如果你按照前面的配置设置了python.defaultInterpreterPath并且打开了my_python_app文件夹作为工作区VS Code通常会自动检测到.venv并选择它作为解释器。你也可以手动选择点击VS Code底部状态栏的Python版本区域或按CtrlShiftP输入“Python: Select Interpreter”然后选择路径为./.venv/bin/python的解释器。4.2 依赖管理与requirements.txt在激活的虚拟环境中安装项目所需的包例如(.venv) pip install django4.2.6 (.venv) pip install requests pandas安装完成后将当前环境的依赖列表导出到一个文件中这是项目可复现性的关键(.venv) pip freeze requirements.txt生成的requirements.txt文件内容类似于asgiref3.7.2 Django4.2.6 pandas2.1.4 python-dateutil2.8.2 pytz2023.3.post1 requests2.31.0 six1.16.0 sqlparse0.4.4 tzdata2023.3当另一位开发者拿到你的项目代码时他只需要创建虚拟环境然后执行pip install -r requirements.txt就能一键安装所有指定版本的依赖确保环境一致。高级技巧使用pip-tools进行更精细的依赖管理。pip freeze会导出所有包包括间接依赖即你安装的包所依赖的包。这有时会导致依赖树过于僵化。一个更专业的做法是维护一个requirements.in文件里面只写你直接依赖的包如Django4.2,5.0然后使用pip-compile来自pip-tools包来生成一个锁定所有版本包括间接依赖的requirements.txt。这样既保证了可复现性又在requirements.in中保留了一定的版本灵活性。4.3 虚拟环境在VS Code中的集成VS Code与虚拟环境的集成非常顺畅。一旦你选择了正确的解释器.venv/bin/python以下功能都会基于该环境工作智能补全IntelliSensePylance会分析虚拟环境中已安装的包为你提供准确的补全。代码导航F12跳转到定义会跳转到虚拟环境site-packages里该包的实际源码。调试调试器会使用虚拟环境中的Python执行你的代码。终端如前所述VS Code的集成终端会自动激活虚拟环境。测试运行pytest或unittest也会在虚拟环境中进行。确保你总是在VS Code的右下角看到正确的解释器路径。这是保证一切功能正常的基础。5. 高效开发调试、测试与代码质量工具链环境搭好了接下来要让开发过程本身变得高效和可靠。这涉及到调试、测试和代码质量检查。5.1 配置与使用VS Code调试器VS Code的Python调试器非常强大。假设我们有一个简单的脚本app.pydef greet(name): return fHello, {name}! if __name__ __main__: message greet(World) print(message)要调试它最简单的方法是在代码行号左侧点击设置一个断点红色圆点。然后有几种方式启动调试按F5键。点击左侧活动栏的“运行和调试”图标虫子形状然后点击绿色的播放按钮。在代码编辑区域右键选择“调试Python文件”。首次调试时VS Code可能会让你选择调试配置。它会自动生成一个.vscode/launch.json文件。一个典型的用于调试当前文件的配置如下{ version: 0.2.0, configurations: [ { name: Python: Current File, type: python, request: launch, program: ${file}, console: integratedTerminal, justMyCode: false // 设置为true则只调试自己的代码不进入库代码 } ] }启动调试后程序会在断点处暂停。此时你可以在顶部调试工具栏控制执行继续、单步跳过、单步进入、单步跳出、重启、停止。在左侧“变量”面板查看当前作用域内的所有变量及其值。将鼠标悬停在代码中的变量上查看其当前值。在“调试控制台”中输入表达式实时求值。对于Django、Flask等Web框架调试配置会更复杂一些需要指定模块路径和参数。VS Code的Python插件通常提供了针对这些框架的调试配置模板可以在创建调试配置时选择。5.2 集成单元测试编写测试是保证代码质量的重要手段。VS Code对pytest和unittest都有很好的支持。我更喜欢pytest因为它更简洁强大。首先在虚拟环境中安装pytest(.venv) pip install pytest假设我们为上面的greet函数写一个测试文件test_app.pyfrom app import greet def test_greet(): assert greet(Alice) Hello, Alice! assert greet(Bob) ! Hello, Alice!在VS Code中有几种方式运行测试发现测试点击底部状态栏的“烧杯”图标或者按CtrlShiftP输入“Python: Discover Tests”。VS Code会扫描项目发现测试用例。运行单个测试在测试函数上方的代码行号附近会出现“Run Test”和“Debug Test”的按钮。点击即可运行或调试该测试。运行所有测试在测试文件内右键选择“Run All Tests”。通过命令面板CtrlShiftP输入“Python: Run All Tests”。测试结果会在VS Code的“Python Test Log”输出面板中显示绿色对勾表示通过红色叉号表示失败并会显示详细的错误信息。你可以在用户设置中配置测试框架和模式python.testing.pytestEnabled: true, python.testing.unittestEnabled: false, python.testing.cwd: ${workspaceFolder}, // 测试运行的工作目录 python.testing.pytestArgs: [ -v, // 详细输出 --tbshort // 简短的错误回溯 ]5.3 代码质量与风格检查LintingLinting是指在代码运行前静态分析代码找出潜在的错误、不规范的写法或风格问题。Python生态中常用的Linter是pylint和flake8格式化工具是black和autopep8。我们之前已经配置了black作为格式化工具现在来配置pylint。首先安装pylint(.venv) pip install pylint然后在VS Code的settings.json中启用它python.linting.enabled: true, python.linting.pylintEnabled: true, python.linting.lintOnSave: true, // 保存时执行linting python.linting.pylintArgs: [ --max-line-length88, // 与black的默认行长相匹配 --disableC0111 // 例如禁用缺失文档字符串的警告根据团队规范调整 ]现在当你编写代码时pylint会实时分析。发现问题的地方会有波浪线提示警告是黄色错误是红色。将鼠标悬停在上面可以看到具体问题描述。保存文件时也会触发一次检查并在“问题”面板CtrlShiftM中列出所有问题。格式化Formatting我们已经配置了black。你可以手动格式化一个文件右键选择“格式化文档”或ShiftAltF或者依靠我们之前设置的editor.formatOnSave: true在保存时自动格式化。注意事项black的格式化风格是固定的不容配置除了行长度。这听起来很专制但它彻底消除了团队内的代码风格争论。如果你的团队有历史包袱或特殊风格要求可以考虑autopep8或yapf。但就我个人经验而言拥抱black能让团队协作更顺畅。6. 高级主题与生产力提升技巧基础环境和工作流搭建完毕后我们可以关注一些能进一步提升开发效率和舒适度的“高级”主题。6.1 使用Jupyter Notebook进行探索性编程如果你做数据分析、机器学习或需要交互式探索Jupyter Notebook是绝佳工具。VS Code内置了出色的Jupyter支持。首先在虚拟环境中安装jupyter(.venv) pip install jupyter然后在VS Code中安装官方扩展Jupyter (ms-toolsai.jupyter)。安装后VS Code就能识别.ipynb文件并提供一个类似网页版Jupyter的交互式编辑体验。创建一个新的.ipynb文件VS Code会自动启动一个Jupyter内核使用你当前选择的Python解释器。你可以在单元格Cell中编写代码按ShiftEnter运行该单元格结果会直接显示在下方。你可以插入Markdown单元格写注释画图表需要安装matplotlib等库。VS Code的Jupyter体验相比浏览器版有几个优势与编辑器深度集成可以使用VS Code的所有编辑功能多光标、快捷键、代码片段。更好的源代码管理.ipynb文件是JSON格式在Git中diff不直观。VS Code允许你以“原生”模式编辑或者使用一些扩展来改善diff体验。变量查看器可以直观地查看Notebook中所有变量的当前值和类型。调试支持甚至可以调试Notebook中的代码。6.2 配置远程开发SSH/WSL这是VS Code的杀手级功能之一。你可以把VS Code安装在你的Windows/Mac笔记本上然后连接到远程的Ubuntu 20.04服务器、虚拟机或者WSLWindows Subsystem for Linux中进行开发。所有编辑、调试、终端操作都像是在本地一样但实际的计算和文件访问发生在远程。安装Remote - SSH扩展在VS Code扩展商店搜索并安装ms-vscode-remote.remote-ssh。配置SSH连接按F1打开命令面板输入“Remote-SSH: Connect to Host...”然后选择“Configure SSH Hosts...”编辑你的SSH配置文件通常是~/.ssh/config添加服务器信息Host my-ubuntu-server HostName 192.168.1.100 # 你的服务器IP User your_username IdentityFile ~/.ssh/id_rsa # 你的私钥路径连接再次执行“Remote-SSH: Connect to Host...”选择my-ubuntu-server。VS Code会在新窗口中打开并开始在远程服务器上安装必要的服务端组件。完成后你就可以像操作本地文件夹一样打开远程服务器上的项目目录安装插件插件会分为本地UI插件和远程运行插件使用终端。所有Python环境配置、调试都在远程服务器上进行本地只负责提供编辑器界面。这对于在性能强大的远程服务器或统一开发环境上进行计算密集型任务如深度学习训练特别有用。6.3 自定义代码片段与快捷键VS Code允许你创建自定义代码片段Snippets快速插入常用的代码块。例如创建一个用于Flask路由的片段按CtrlShiftP输入“Preferences: Configure User Snippets”选择“python.json”。在文件中添加{ Flask Route: { prefix: flaskroute, body: [ app.route(/${1:path}), def ${2:function_name}():, ${3:return Hello World!}, ], description: Create a basic Flask route } }保存后在Python文件中输入flaskroute并按Tab键就会自动生成一个Flask路由的代码框架并且光标会依次跳转到${1},${2},${3}的位置让你填充。快捷键熟悉并自定义快捷键能极大提升效率。一些必知的Python开发相关快捷键CtrlShiftP万能命令面板。CtrlP快速打开文件。F12/CtrlClick跳转到定义。AltF12预览定义不跳转。ShiftF12查找所有引用。F2重命名符号变量、函数名等会修改所有引用。Ctrl/注释/取消注释行。ShiftAltF格式化文档。Ctrl显示/隐藏集成终端。你可以在“文件”-“首选项”-“键盘快捷方式”中查看和修改所有快捷键。7. 常见问题与故障排除实录即使按照步骤操作也难免会遇到问题。这里记录一些我遇到过的典型问题及其解决方法。7.1 VS Code无法识别Python解释器或虚拟环境症状VS Code底部状态栏显示“Python”字样但点开后没有列出你的虚拟环境.venv/bin/python或者选择了但智能补全、导入都不工作。排查步骤确认虚拟环境已创建且激活在VS Code的集成终端里运行which python和pip list确认路径在.venv内且包是独立的。重新选择解释器按CtrlShiftP运行“Python: Select Interpreter”看看列表里有没有你的.venv路径。如果没有尝试“Enter interpreter path...”手动输入./.venv/bin/python的绝对路径。重启VS Code有时扩展或语言服务器状态异常重启编辑器是最快的方法。检查Python扩展输出点击VS Code底部状态栏的“Python”字样或“设置”图标选择“输出”然后在右侧下拉框选择“Python”。查看这里面的日志通常会有错误信息。常见错误是Pylance语言服务器启动失败可能是环境依赖问题。重新安装Python扩展在极端情况下可以尝试禁用再重新启用Python扩展或者卸载后重装。7.2 Pylance语言服务器报错或补全不工作症状代码没有智能补全或者出现“Pylance report missing imports”等错误但代码实际能运行。可能原因与解决虚拟环境未正确加载确保VS Code使用的解释器是虚拟环境内的。Pylance会基于该环境分析包。工作区太大或包含复杂符号链接Pylance会索引整个工作区。如果文件夹特别大如包含node_modules,__pycache__,.git可能会变慢或出错。可以在.vscode/settings.json中添加排除设置python.analysis.exclude: [ **/__pycache__, **/.git, **/node_modules, **/build, **/dist ]类型存根stub缺失有些第三方库没有提供类型注解Pylance会提示。可以尝试安装对应的类型存根包通常是types-包名例如pip install types-requests。或者对于自己可以忽略的库在设置中禁用诊断python.analysis.diagnosticSeverityOverrides: { reportMissingModuleSource: none }重启语言服务器按CtrlShiftP运行“Python: Restart Language Server”。7.3 调试器无法启动或断点不生效症状按F5启动调试程序一闪而过或者停在断点处但没有反应。排查检查launch.json配置确认program字段指向正确的入口文件。对于模块启动如python -m flask run需要使用module字段而非program。检查工作目录cwd当前工作目录设置是否正确有时脚本依赖相对路径工作目录不对会导致文件找不到。使用“调试控制台”输出在launch.json的配置中将console设置为internalConsole然后启动调试。在“调试控制台”中可以看到更详细的输出和错误信息。检查Python路径确保调试器使用的Python解释器和你预期的虚拟环境是同一个。可以在launch.json中显式指定python: ${workspaceFolder}/.venv/bin/python对于Web应用如Flask/Django需要配置正确的启动参数和端口。VS Code有针对这些框架的调试配置模板建议使用它们。7.4 pip安装包速度慢或超时症状pip install下载极慢甚至出现ReadTimeoutError。解决使用国内镜像源。可以为单次安装指定源pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package或者更一劳永逸的方法是创建或修改pip配置文件 在用户目录下创建~/.pip/pip.confLinux/macOS或%APPDATA%\pip\pip.iniWindows内容如下[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cn常用的国内镜像还有阿里云(https://mirrors.aliyun.com/pypi/simple/)、腾讯云等。7.5 系统包与Python包的冲突症状在Ubuntu上使用sudo apt install python3-xxx安装的系统Python包和你用pip install在虚拟环境里安装的包或者和pyenv管理的Python版本产生冲突。黄金法则永远不要使用sudo pip install。这会将包安装到系统Python的site-packages可能破坏系统工具如apt所依赖的Python环境。对于用apt管理的Python工具如python3-pip,python3-venv可以全局安装。它们是工具本身。对于项目依赖永远在虚拟环境中用pip install不加sudo安装。使用pyenv管理Python解释器版本与系统自带的Python 3.8完全隔离。如果不小心污染了系统环境可以尝试python3 -m pip uninstall卸载出问题的包但最干净的方法是为每个项目使用独立的虚拟环境并确保在虚拟环境激活的状态下进行所有pip操作。这样系统环境永远保持干净。