1. 放着PyCharm不用为什么非要在IDEA里写Python先交代一下背景。我日常的主力开发工具是IntelliJ IDEA主要写Java后端但平时免不了要处理一些Python脚本写写数据清洗、爬个接口、跑个机器学习demo或者临时验证一个算法思路。以前的做法是再装一个PyCharm两个IDE来回切换时间长了真有点烦。且不说内存占用翻倍光是两套快捷键、两套主题配置、两套插件体系就够让人精神分裂的。后来我发现IDEA本身是支持Python开发的装上一个官方插件就能在同一个环境里写Python不需要另起炉灶。这件事很多人不知道或者知道了也觉得“不专业”认为写Python就该用PyCharm。我的真实感受是如果你本来就在IDEA里写Java那么把Python塞进来是一件非常自然的事尤其适合全栈开发、快速脚本、跨语言联调这些场景。这篇文章就完整记录一下我是怎么在IDEA里把Python跑起来的包括环境配置、项目创建、虚拟环境、爬虫练手以及我踩过的一些坑。先把这个问题的适用人群说清楚如果你是一个只用Python、不碰Java的纯Python开发者那我建议你老老实实用PyCharm没必要折腾IDEA。但如果你像我一样主力语言是Java或者需要多语言混合开发那在IDEA里一键切换Python绝对是提升效率的正路。2. 开工前的环境准备插件、解释器和项目骨架这一部分是最容易出错的地方因为IDEA本身不自带Python运行环境它只是一个编辑器外壳。要把代码跑起来需要把三件事串到一起IDEA里的Python插件、操作系统里的Python解释器、以及项目层面的SDK配置。这三者任何一个掉链子都会出现“代码明明没问题但就是跑不起来”的诡异现象。2.1 安装Python插件打开IDEA进入File - SettingsmacOS上是IntelliJ IDEA - Preferences找到Plugins在Marketplace搜索框里输入“Python”。看到那个由JetBrains官方发布的Python插件直接Install装完重启IDEPython支持就激活了。这里有一个容易被忽略的细节IDEA有两个版本——免费的社区版Community和收费的旗舰版Ultimate。之前很长一段时间Python插件只支持旗舰版社区版就算搜索到了也装不上这也是很多人说“IDEA不能写Python”的原因。但后来JetBrains改变了策略社区版也开放了Python插件的支持只是部分高级功能比如数据库工具集成仍然需要旗舰版。所以现在无论你用的是哪个版本装这个插件都没问题。装完插件以后你可以在New Project的向导里看到Python类型的选项。如果看不到大概率是插件没装成功或者IDEA版本太老。建议把IDEA升级到较新的版本老版本存在兼容性问题。2.2 安装Python解释器IDEA只是编辑器真正执行代码的是Python解释器。这一步很多人会忽略以为装了插件就够了结果新建项目时发现找不到解释器。去Python官网下载对应你操作系统的安装包Windows用户注意安装时勾选“Add Python to PATH”这样后面少很多麻烦。macOS用户推荐用Homebrew装一条命令搞定brew install pythonLinux用户更简单直接用系统的包管理器比如Ubuntu/Debiansudo apt update sudo apt install python3 python3-pip装完以后验证一下python3 --version pip3 --version看到版本号输出就说明基础环境OK了。这里提醒一句不要同时装太多Python版本也不要手动去改系统自带的Python路径后面配置SDK时容易造成混乱。2.3 在IDEA中配置全局SDKPython解释器在IDEA里的专业叫法是“Python SDK”。建议在全局层面先配置好这样以后每次新建项目只需要选择不需要重新指定。打开Settings - Languages Frameworks - Python或者直接在项目欢迎页进入Configure - Settings找到Python Interpreter选项。点击“Add Interpreter”按钮选择“Add Local Interpreter”在弹出来的窗口中指定Python解释器的路径。如果你用的是venv、conda这类虚拟环境也是在这里配置。配置完成后在IDEA右下角或者项目设置里能看到当前项目绑定的解释器路径。看到路径就说明IDEA已经能够调用Python环境去执行代码了。3. 创建并跑通第一个Python项目环境准备阶段完成以后接下来就是创建一个真正的Python项目。这个环节虽然看起来只是一路点“Next”但里面的几个选项值得仔细解释一下尤其是虚拟环境的概念。3.1 新建项目时的类型选择点击New Project在左侧选择“Python”右侧会出现项目名称、项目路径和解释器配置。如果你在创建项目前已经在全局配置好了SDK在这里直接选中即可。这里有三种创建方式我不建议直接从空文件开始。虽然IDEA支持在任意目录下直接新建一个.py文件然后运行但这样管理依赖非常痛苦。一个正规的Python项目应该是一个有结构的目录包含虚拟环境、入口文件、依赖清单这些要素。IDEA的“New Project”向导会自动帮你把骨架搭好。创建完成后项目结构大概是这样的my-python-project/ ├── .idea/ # IDEA的工程配置目录 ├── venv/ # 虚拟环境 ├── main.py # 入口文件 └── requirements.txt # 依赖清单默认可能没有手动创建3.2 虚拟环境每个项目隔离依赖虚拟环境是Python开发里最重要的概念之一。简单说它把每个项目的第三方库装到一个独立的目录里互不干扰。没有虚拟环境的话你所有的项目共享一套全局依赖一旦两个项目需要同一个包的版本不一样就会产生冲突。比如项目A需要requests 2.28项目B需要requests 2.31这两个兼容性可能出问题。IDEA创建项目时默认会帮你创建venv虚拟环境。你在新建项目窗口能看到“Create a virtual environment using Venv”这样的选项保持默认即可。这个venv会创建一个隐藏目录里面装着独立的Python解释器和pip。后续你用IDEA安装第三方包时会自动装到这个虚拟环境里不会污染全局。如果你更习惯用condaIDEA也支持。选“Conda”作为环境管理器然后指定一个已存在的conda环境即可。两种方案没有绝对优劣只要保持每个项目隔离就是对的。3.3 运行、调试与快捷键在IDEA里运行一个Python文件非常简单直接右键代码编辑区选择“Run main”即可。第一次运行后IDEA会记住这个运行配置以后可以直接点击右上角的绿色三角形按钮或者按ShiftF10。调试模式更实用。在代码行号左侧点击一下设置断点然后点击右上角的绿色虫子图标或者按ShiftF9代码就会运行到断点处停下来。这时候你可以在Debugger面板看到当前变量的值、调用堆栈也可以按F7/F8逐步执行。对于排查复杂逻辑问题这个调试器比print大法好用太多。这里分享一个我自己的习惯进入调试模式以后看到一个变量可以右键把它“Add to Watches”这样每次单步执行时就能实时看到这个变量的变化。写Python写多了以后你会发现这比在代码里插一堆print然后删除要高效得多。4. 真正干活时最常用的几组功能光能跑通hello world不算什么要在IDEA里高效写Python需要熟悉几组日常开发中最常用的功能。我在这里挑几个最有价值的讲这些都是我实际用下来觉得真能提升效率的。4.1 代码补全与智能提示IDEA对Python的代码补全说实话已经做得很不错了虽然跟专门为Python优化的PyCharm相比还是有一点距离但在日常开发中完全够用。输入“imp”然后按TabIDEA会自动补全成“import”。输入一个函数名的前几个字母下拉列表马上就会出现匹配的函数。这些基础功能不用多说关键是它对第三方库的理解能力。比如你这次项目里用到了requestsIDEA会分析这个库的源码和类型标注当你在代码里输入“resp.”的时候它会自动列出resp对象的所有方法和属性包括status_code、json()这些省去翻文档的频率。不过智能提示的前提是你的虚拟环境配置正确而且第三方库安装到了这个虚拟环境里。如果明明装了库却还是没有提示去Settings - Project - Python Interpreter里看一眼解释器路径对不对大概率是选错了环境。4.2 包管理pip与requirements.txtPython写到最后逃不开安装第三方包。很多人习惯在终端里手动敲pip install但在IDEA里你有更舒服的方式。在项目下打开终端IDEA底部有Terminal按钮确保当前激活的是你的虚拟环境。Windows的命令是venv\Scripts\activatemacOS/Linux是source venv/bin/activate激活后终端前面会出现一个“(venv)”的前缀这时候再用pip install装的就是这个项目的虚拟环境里的包。另外你也可以直接在Settings - Project - Python Interpreter里面看到当前环境已安装的所有包点击加号搜索并安装不用碰命令行。当一个项目需要共享给别人的时候一定要生成requirements.txt。在终端里执行pip freeze requirements.txt别人拿到这个文件后一条命令就能把环境重新搭出来pip install -r requirements.txt这是Python项目协作的基本礼仪。4.3 代码风格检查和重构Python对代码风格的要求比较高PEP8标准是写出规范代码的基础。在IDEA里不需要你逐条记规则它自己就带了不少规范检查比如行长度、缩进、不必要的import等会以高亮和提示的方式标出来。还有两个非常实用的小功能。第一个是“Optimize Imports”可以自动清理掉代码里没用到的import语句按键是CtrlAltO。第二个是“Reformat Code”可以一键把当前文件的缩进、空格、换行调整为统一风格按键是CtrlAltL。这两招配合起来代码整洁程度能提升一个台阶。5. 拿爬虫当练手一个完整的requests项目实战这一部分我用一个真实的爬虫例子来展示在IDEA里写Python的完整流程。为什么选爬虫因为爬虫是Python最典型的应用场景之一而且涉及依赖安装、接口请求、数据处理、文件IO等常见操作能很好地检验你的环境是否真的配置好了。5.1 项目需求与依赖假设我们要写一个简单的爬虫抓取一个公开API返回的JSON数据然后提取其中几个字段保存到本地。这个例子不涉及复杂的反爬策略纯粹是为了演示项目流程。首先我们需要安装requests库。在IDEA的Terminal里先激活虚拟环境然后执行pip install requests装完以后在代码里import requests如果IDEA没有报警告说明环境正常。5.2 编写爬虫代码创建一个新文件名叫fetch_data.py或者直接在main.py里写。核心代码大概是这样的import requests import json def fetch_todo_data(): url https://jsonplaceholder.typicode.com/todos response requests.get(url, timeout10) response.raise_for_status() return response.json() def extract_titles(data): return [item[title] for item in data if item.get(completed)] def save_to_file(items, filenamecompleted_titles.json): with open(filename, w, encodingutf-8) as f: json.dump(items, f, ensure_asciiFalse, indent2) if __name__ __main__: todos fetch_todo_data() titles extract_titles(todos) save_to_file(titles) print(f共提取 {len(titles)} 条已完成事项的标题)这个例子虽然简单但包含了爬虫开发的基本要素发起请求、解析响应、处理数据、保存结果。写代码的时候可以试试IDEA的补全功能看看它能不能在你输入response点号的时候自动列出会话、状态码、请求URL那些方法。5.3 调试和常见问题第一次运行后正常情况会在控制台输出“共提取 90 条已完成事项的标题”并在项目根目录生成一个completed_titles.json文件。如果出现问题大概率是以下几种情况网络请求失败——最直接的原因就是网络连不通这种只能排查网络环境。编码问题——“UnicodeEncodeError”这种报错通常是因为控制台编码和文件编码不一致。IDEA的默认编码一般是UTF-8建议把项目编码也统一设置为UTF-8具体在Settings - Editor - File Encodings里检查。超时问题——“timeout10”的限制在某些慢网络下可能不够可以适当调大。调试这个项目的时候可以在fetch_todo_data函数那行加上断点查看返回的数据结构确认是一个列表、列表里每个元素是字典然后再决定后面的字段提取逻辑怎么写。这个“先看数据结构、再写处理逻辑”的顺序非常重要很多新手一上来就假设数据长什么样结果运行时才发现字段名对不上。5.4 用爬虫顺带测试第三方库的智能感知这里补充一个很多人没注意到的点IDEA对requests库的智能感知其实可以帮你避免很多低级错误。比如你在写“resp.raise_for_status()”的时候IDEA会提示你括号是否完整方法名拼写是否有误。如果你写“reponse”而不是“response”IDEA会直接在高亮部分标出来不用等运行时才发现。这种静态检查对提速非常有帮助。写Java的人应该深有体会IDEA的“红线提示”几乎成了编码时的安全感来源。到了Python这里虽然没有Java那么严格但基础的拼写检查、导包检查、类型标注检查都是有的关键是你要养成随时看高亮提示的习惯而不是把代码写完一次性运行。6. 我踩过的坑和给你的一些建议这部分是纯经验分享走的都是我自己摔过跟头的地方。6.1 解释器路径不对导致的“找不到模块”我踩过最大的坑就是模块找不到。写了一个爬虫明明requests已经装好了但运行时始终报“ModuleNotFoundError: No module named requests”。排查了半天才发现我当前项目绑定的是全局Python解释器而不是项目里创建的那个venv虚拟环境。我是在全局环境里pip install了requests但运行项目时IDEA用的是系统的解释器两者不在同一个环境里。解决方法是到Settings - Project - Python Interpreter里面把解释器切换成项目下的venv路径然后重新pip install。给你的建议是新建项目的时候一定看清那个“Create a new virtual environment”是不是勾选状态。项目创建好以后第一时间去设置里看一眼当前解释器的路径如果前缀带venv说明没问题。不要等到报错了才来看这一层。6.2 控制台中文乱码第二个常见坑是中文乱码。Windows下更容易遇到这个问题尤其是爬取中文网页或者输出包含中文的日志时。IDEA默认的控制台编码不一定是UTF-8可能导致中文输出变成乱码。解决办法是在Help - Edit Custom VM Options里加上一行-Dfile.encodingUTF-8然后重启IDEA。同时把Settings - Editor - File Encodings下的Global Encoding、Project Encoding、Default encoding for properties files都改成UTF-8。这两步做完乱码问题基本能解决。6.3 补充几个实用插件除了官方Python插件还有几个插件值得装一下。一个是Python Community Edition的增强包可以在插件市场搜Python相关的扩展看看。另外“.env files”这个插件对管理环境变量很方便写爬虫的时候经常会用到代理配置或者密钥配置。还有“Rainbow Brackets”虽然不特定于Python但对嵌套比较深的代码还是很友好的能让括号的配对一眼看出来。6.4 关于IDEA写Python和PyCharm的最终结论说了这么多最后聊几句关于工具选择的个人感受。如果你本身就是PyCharm的用户完全没必要为了“统一IDE”强迫自己切到IDEA。PyCharm对Python的支持比IDEA更深入尤其是数据科学相关功能、IPython Notebook集成、科学模式这些PyCharm做得更细。但反过来如果你本来就是IDEA用户只是偶尔写写Python脚本或者你的项目是JavaPython混合的比如后端Java、算法脚本Python、数据分析用Python那在IDEA里装个Python插件就是性价比最高的选择。省了一次IDE切换也省了一套快捷键记忆。根据我个人的经验最理想的工作流是这样的Java核心业务在IDEA里写Python脚本、爬虫、数据处理也在IDEA里写把IDEA当成唯一的开发入口。只有当脚本量特别大或者要长时间专注于数据处理时我才会打开PyCharm。这就像家里常备一把瑞士军刀和一个专业工具箱日常用军刀干重活用工具箱没必要因为买了军刀就丢掉工具箱也没必要天天背着工具箱出门。又想起来一个细节可以再补充一下。因为IDEA本身是为Java设计的它的内存占用本身就偏高如果你电脑配置一般开了IDEA再开一堆项目多写一个Python项目多占一份内存。这时候可以把不用的项目从IDEA里关掉或者用IDEA的“Power Save Mode”省电模式临时关掉一些后台索引功能会让机器轻松一些。最后再分享一个小技巧在IDEA里写Python时可以给Python文件配置一个自定义的文件模板。这样每次新建文件时自动带上“# -- coding: utf-8 --”这行注释、文件说明、作者信息这些省得每次手动敲。路径在Settings - Editor - File and Code Templates选择Python Script修改模板内容即可。这类小细节顺手做掉长期积累能节省不少时间。这就是我在IDEA里写Python的全部经验了。从插件安装到环境配置从项目创建到爬虫实战从踩坑总结到工具选型建议希望对你有实际帮助。