写这篇文章之前,我先说个背景。我几乎每周都能在技术群里看到有人问同一类问题:"Python 装完了怎么双击没反应?""PyCharm 打开后找不到解释器""听说服务器都是 Linux,可我连 ls 都不敢按回车"。这些问题单拎出来都不难,难的是它们经常揉在一起出现——你既要给 Windows 配好本地开发环境,又要把代码搬到 Linux 上跑,中间还夹着一个 IDE 配置。今天这篇就把整个链路讲透:基于 python3.9.7 这个版本,配上 pycharm-community-2022.3.2 这个免费 IDE,再把 Linux 从虚拟机安装、系统内配置 Python 到常用命令全部过一遍。不管你是刚报名网课的学生,还是被公司赶鸭子上架转开发的运维,这篇文章都能让你少走一个月的弯路。
1. 为什么是 Python 3.9.7 + PyCharm Community 2022.3.2 这套组合
1.1 版本选型的真实逻辑
先说 Python 版本。3.9.7 并不是最新版,现在 Python 3.12 都出来好久了,但我在实际推荐里仍然经常让人装 3.9 系列,原因很现实:生态兼容性。你去看很多网课、教材、老项目的 requirements.txt,里面绝大多数依赖的版本约束都是针对 Python 3.7 到 3.9 写的。尤其是一些涉及科学计算的库,比如 numpy、pandas、scipy,在 3.10 之后虽然也支持,但编译安装时偶尔会给你出点幺蛾子。而 3.9.7 这个小版本属于 3.9 生命周期中段的稳定维护版,既包含了对前面版本的 bug 修复,又没有后续版本引入的兼容性疑虑,拿来当学习和项目开发的基准版本非常稳妥。
再说 IDE。PyCharm Community 是 JetBrains 出的免费社区版,2022.3.2 这个具体版本号对应的是 2022 年底发布的维护版本。为什么选它?因为社区版功能虽少,但对纯 Python 开发来说完全够用——语法高亮、代码补全、调试器、版本控制集成、虚拟环境管理全都有。它缺失的主要是数据库工具、前端框架支持和远程开发,这些对刚入门或者做后端日常开发的人来说,并不是必需品。而且 Community 是开源免费的,不存在破解、激活之类的问题,这一点必须强调:任何让你去买激活码或者破解补丁的教程都是坑,社区版老老实实从官网下载就行。
1.2 这套组合能解决什么问题
拆开看,这三样东西其实是三个层面的能力。Python 3.9.7 是解释器,它负责把你的代码翻译成机器能执行的指令;PyCharm Community 是编辑器,它让你写代码、调试代码的过程变得可视化和高效;Linux 是运行环境,你最终写的脚本、Web 服务、自动化任务,大概率是要跑在一台 Linux 服务器上的,字节码也好、部署方式也好,都得在 Linux 里再过一遍。所以这套组合覆盖了一个完整的学习路径:Windows 上写代码入门,然后在 Linux 上把代码真正跑起来。适合的人群主要有三类:刚学 Python 的编程新手、想从 Windows 脚本开发转向服务器端部署的开发者、以及准备运维面试但缺开发手感的技术人员。
还有一个隐藏好处:这套组合是跨平台的。Windows 上写的 Python 代码,拿到 Linux 上只要依赖一致,基本可以直接跑。这种"一次编写、处处运行"的体验,在你用虚拟机配好 Linux 环境后会感受得非常明显。
2. Windows 下安装 Python 3.9.7:一步步来
2.1 下载安装包前的关键准备
安装之前先确认一件事:你的 Windows 是 64 位还是 32 位。现在基本没有 32 位系统了,但保险起见,右键"此电脑"选属性就能看到。然后去 Python 官网的下载页找到 Python 3.9.7 的 Windows installer (64-bit),一个大概 25MB 左右的 exe 文件。这里特别提醒:不要从第三方下载站下载安装包。那些站点经常捆绑全家桶软件,或者给你塞一个修改过的安装器,装完都不知道多了什么东西。官网地址是 python.org,进入 Downloads 页面后选择 Windows,找到 3.9.7 版本即可。
下载完成后,双击运行安装程序,这里就到了第一个新手翻车点。安装向导第一屏最下方有一个复选框,写着Add Python 3.9 to PATH,这个必须勾上。它的作用是让系统能在任何路径下直接识别 python 命令。如果没勾,你后面在命令行里敲 python 就会提示"不是内部或外部命令",还得手动改环境变量,白白折腾半小时。勾选之后,我建议不要直接点 Install Now,而是点 Customize installation,进入自定义安装。默认选项里有一个"为所有用户安装"和"关联文件",保持默认即可,重点是下一步里的安装路径。我习惯把 Python 装到一个干净目录,比如C:\Python39,避免默认路径里的用户名中文字符导致某些老库编译出错。
安装过程大概一两分钟,等到出现"Setup was successful"就完成了。这里有个小细节:安装向导最后一步会显示"Disable path length limit"的选项,建议点一下,它会把 Windows 的路径长度限制从 260 字符放宽到系统支持的最大长度。别小看这个,你以后装了虚拟环境、多层嵌套的依赖目录,路径一旦超过限制,pip 或者编译器就会莫名其妙报错。
2.2 安装完成后的三个验证命令
安装完不要急着打开 PyCharm,先在命令行里做三步验证。按 Win+R 输入 cmd 回车,依次输入以下命令:
python --version pip --version where pythonpython --version输出 Python 3.9.7 就说明解释器装好了。pip --version会显示 pip 对应的版本,如果提示"pip 不是内部或外部命令",多半是安装时没勾选 pip 组件,重新运行安装程序选择 Modify 修复即可。where python会列出系统里所有 python 可执行程序的路径,这一步很有用——很多人的电脑里同时存在微软商店版的 Python 和官网版 Python,两个冲突起来,你在命令行里敲 python 启动的可能是商店那个阉割版,导致后面装包位置混乱。
如果遇到python命令没反应但py命令能用的,说明你系统里装的是 Python Launcher。这种情况下建议直接把 PATH 环境变量改一下,把C:\Python39和C:\Python39\Scripts手动加进去。改完环境变量要重新打开命令行窗口才生效,这是很多人容易忽略的。
2.3 顺手把 pip 源配置好(很多人不知道的提速技巧)
安装完 Python 后第一个要干的事,我建议先把 pip 的下载源切到国内镜像。不换源的话,装一个小库可能等几分钟,大一点的库直接 timeout 也是常事。在命令行输入这行命令:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这里用的是清华 PyPI 镜像。设置完之后,pip 下载包的速度会快非常多。我见过太多新手在这里卡住——装个 requests 库失败三次就怀疑人生了,其实根本不是你的问题,就是默认源在国外,网络波动大。这是正常环境优化操作,几乎所有国内开发者都在这么用。
3. PyCharm Community 2022.3.2 安装与首个项目
3.1 下载安装与界面设置
PyCharm 的下载也认准官网地址 jetbrains.com。进入官网后点 Developer Tools,找到 PyCharm,选择 Community 版本下载 Windows 的 exe 安装包。Community 版是免费的,下载页会有一个收费标准提示,但你别管那个 Ultimate 版本,直接选 Community 下载按钮。安装过程比较简单,一直 Next 就行,有两个点需要留意:一是"创建桌面快捷方式"建议勾上,二是"将 PyCharm 加入右键菜单"看你个人习惯,我喜欢勾上,这样在文件夹里右键选 Open Folder as Project 就能快速进入项目。
安装完成后如果问你是否导入设置,新手直接选 Do not import settings。第一次启动会进入主题选择界面,选一个你顺眼的主题。然后我建议一进 IDE 就先做两件事。第一件,在 File -> Settings -> Appearance 里把字体调大,默认的 12 号字盯着看两小时眼睛会废;第二件,打开 File -> Settings -> Editor -> General,把"Show line numbers"打开,写代码时定位错误全靠行号。
3.2 配置解释器,创建第一个项目
新建项目是新手最容易迷茫的地方。打开 IDE 后点击 New Project,你会看到一个"Base interpreter"下拉框。正常情况下 PyCharm 会自动检测到刚才装的 Python 3.9.7,如果没有,点击下拉框旁边的"Add Interpreter",选择"System Interpreter",手动把 C:\Python39\python.exe 加进去。还有一个关键选项叫"Create a virtual environment"或者叫 venv,建议保持启用。虚拟环境的作用是给每个项目隔离出一套独立的第三方库,A 项目装了 Django 4,B 项目可以装 Django 2,互不干扰。这个隔离思路在你以后维护多个项目时会救命。
位置选择好后,点 Create 就会进入主界面。项目创建后,PyCharm 会自动生成一个 main.py,里面是 Hello World 模板。此时可以直接右键空白处选 Run 'main',下方控制台如果输出Hello World或者Hi, PyCharm,说明你的环境从解释器到 IDE 全线打通了。这一步值得好好庆祝一下,因为从这里开始,你算是真正进入了"能写代码、能跑代码"的阶段。
3.3 几个提升幸福感的小配置
趁热打铁说三个新手不知道但很实用的配置。第一个是自动保存,PyCharm 默认会自动保存,但你可以把 Editor -> General -> Editor Tabs 里的"Mark modified tabs with asterisk"关掉,避免看到文件名旁边多个小星星就心里不舒服。第二个是快捷键提示,菜单 View -> Quick Schemes 里可以改键位,但新手不建议折腾,用默认的就好。第三个是插件,Community 版虽然没有性能分析工具,但可以在 Settings -> Plugins 里搜 Chinese Language Pack,装一个中文语言包,界面所有位置都能变中文。这对英文不好的同学非常友好,记住插件市场要用官方源,别信那些第三方破解插件的说法。
4. 为什么要补 Linux?先搞一套虚拟机
4.1 开发者的 Linux 必修课
很多新手问:我 Windows 上写得好好的,为什么还要学 Linux?这个问题我一般用三个理由回答。第一,服务器市场。你去看看主流云服务商提供的操作系统镜像,绝大多数是 Linux 系的发行版;任何要做线上部署的项目,最终跑代码的环境大概率是 Linux。第二,容器技术。Docker 的底层依赖 Linux 内核特性,你在 Windows 上用 Docker Desktop 也只是靠虚拟机套了一层,真正生产环境跑容器仍然是 Linux。第三,公司现状。很多中小公司的生产服务器、数据库服务器、Git 仓库服务器,清一色 Linux,你哪怕不直接管理它们,排查一个线上问题也要会登录进去看日志、重启服务。
所以别把 Linux 当成选修课,它就是开发者的基本功。对于刚接触 Linux 的人来说,我强烈建议先在虚拟机上装一套,而不是直接把自己的主力电脑换成 Linux。虚拟机的最大好处是随便折腾——装坏了、配置乱了、内核挂了,删掉重来就是,十分钟恢复前状态,不动你真实系统一根汗毛。
4.2 虚拟机安装 Linux 的实际操作
虚拟机软件推荐 VirtualBox,它是开源免费的,官网 virtualbox.org 下载 Windows 版本即可。如果要在生产级配置或者对性能要求高,VMware Workstation Player 也免费,但我更习惯用 VirtualBox,因为它的快照功能用起来很顺手。
Linux 发行版选哪个?新手我最有把握推荐的是 Ubuntu 的 LTS 版本,比如 22.04。LTS 意思是长期支持版,Ubuntu 官方会维护很多年,稳定性和软件源更新都有保障。社区里经常有人推荐 Kali Linux,说它功能强大,但它其实是安全测试专用的,默认不装桌面、软件源里很多开发库也缺,拿来写 Python 会非常折腾。对开发学习者来说,Ubuntu 或 Debian 才是正道。
具体的虚拟机安装流程可以这样走:
- 打开 VirtualBox,点"新建",名称填 ubuntu,类型选 Linux,版本选 Ubuntu (64-bit)。
- 内存建议分配 4096MB(4GB)。如果你的物理机只有 8GB 内存,可以降到 3072MB,再低虚拟机就很卡了。
- 虚拟硬盘选择"现在创建虚拟硬盘",文件类型选 VDI,大小设置 25GB 以上。这里建议选"动态分配",它会按需增长,不会一次性把 25GB 都占掉。
- 创建完成后,选中虚拟机,点"设置",在"存储"里挂载你下载好的 Ubuntu 22.04 的 ISO 镜像。镜像文件去 ubuntu.com 官网下载桌面版即可。
- 点"启动",虚拟机从 ISO 引导后进入安装界面,选择"Install Ubuntu"。语言选中文,键盘布局选"英语 (US)",安装类型选"清除整个磁盘并安装 Ubuntu"。注意这个"清除整个磁盘"是指虚拟机的虚拟硬盘,不会碰你 Windows 的真实数据,实操前确认选中的磁盘是 VBOX 开头的虚拟盘就行。
安装过程中会让你设置用户名和密码,这个密码就是以后 sudo 和登录用的管理员密码,务必记住。装完后虚拟机重启,拔掉 ISO,就能进入 Ubuntu 桌面了。到这里你已经有了一台完整的 Linux 电脑。
4.3 虚拟机装好后必做的三件事
第一件,安装增强功能。菜单栏的"设备 -> 安装增强功能"会挂载一个虚拟光驱,里面有个 VBoxGuestAdditions 的安装脚本,在虚拟机终端里执行它,装完重启后你就能获得鼠标无缝切换、共享剪贴板、动态调整分辨率。没有增强功能的虚拟机,鼠标一进去就出不来,体验非常差。
第二件,更新软件源。打开终端,执行:
sudo apt update sudo apt upgradeapt 是 Ubuntu 的包管理器,update 是刷新软件列表,upgrade 是升级已安装的软件包。第一次执行可能耗时几分钟,但这一步必须做,否则后面装任何东西都可能因为源信息过期而失败。网络连接方面,VirtualBox 默认是 NAT 模式,虚拟机可以正常访问外网,不需要做额外配置。
第三件,给虚拟机拍个快照。在 VirtualBox 界面选中虚拟机,"控制 -> 生成备份"或者工具栏里的"快照"按钮,创建一个新快照。这样以后你不管把系统折腾成什么样,都可以一键恢复到当前这个干净的状态。我见过太多新手把 Linux 装坏了只能从头再来,要是早用快照,三秒钟就解决了。
5. Linux 下再装一套 Python 3.9.7
5.1 为什么不在 Linux 里直接用系统自带 Python
你装好的 Ubuntu 22.04 自带 Python 3.10,那你可能会问:直接用不行吗?行,但有两个问题。第一,部分老依赖对 3.10 编译不友好,你如果有项目指定要求 3.9 环境,直接系统 Python 满足不了版本约束。第二,Ubuntu 系统底层很多工具依赖系统自带的 Python,你要是贸然把默认 python3 改成 3.9,轻则系统工具报错,重则整个桌面环境不稳定。所以原则是:系统 Python 别去动它,再装独立的 Python 3.9.7 放到自己的目录里。
5.2 源码编译安装方式(推荐新手照抄)
在 Linux 上装特定版本 Python,最干净的方式是源码编译。我们需要先下载 Python 3.9.7 的源码包:
cd /tmp wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz tar -xzf Python-3.9.7.tgz cd Python-3.9.7然后安装编译所需的依赖。Ubuntu 上执行:
sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev tk-dev这些依赖里,build-essential 提供 gcc 和 make 编译器;libssl-dev 是给 Python 的 ssl 模块用的,不装的话编译能过,但跑起来会缺 HTTPS 支持,pip 装包时就会报 ssl 相关错误;zlib1g-dev 是解压模块的基础;libreadline-dev 影响交互式命令行的体验;libsqlite3-dev 影响 sqlite3 标准库。这些缺一不可,都是我在实际编译里踩过的坑,每缺一个,编译到一半就报错,回头再装依赖重新 configure,非常浪费时间。
接下来配置编译选项:
./configure --enable-optimizations --prefix=/usr/local/python3.9--prefix参数指定安装目录,这样 Python 会装到 /usr/local/python3.9 下,和系统自带的 /usr/bin/python3 完全隔离。--enable-optimizations会开启 profile-guided 优化,能让 Python 性能更好,代价是编译时间变长。然后执行:
make -j$(nproc) sudo make install$(nproc)会自动获取 CPU 核心数,让编译过程并行执行,速度快很多。整个编译过程在我的四核虚拟机上大约需要十分钟,期间别去点虚拟机,让它专心跑,不然容易把系统拖到卡死。装完后验证:
/usr/local/python3.9/bin/python3.9 --version如果输出 Python 3.9.7,安装成功。接下来可以做一个软链接,方便以后使用:
sudo ln -s /usr/local/python3.9/bin/python3.9 /usr/local/bin/python3.9 sudo ln -s /usr/local/python3.9/bin/pip3.9 /usr/local/bin/pip3.9这样你在终端里敲 python3.9 和 pip3.9 就能直接调用新装的 Python 了。
5.3 更优雅的方案:pyenv 管理多版本
如果你打算以后经常切 Python 版本,源码编译的方式就有点笨了——装一个版本要编译一次,管理起来也累。这时候可以用 pyenv 这个版本管理工具。pyenv 的安装方式是:
curl https://pyenv.run | bash安装完成后,把下面几行添加到 ~/.bashrc 文件末尾:
export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)"然后执行source ~/.bashrc让配置生效。接下来安装 Python 3.9.7 就变成一条命令:
pyenv install 3.9.7pyenv 会自己下载源码、编译并隔离安装。不需要手动管目录,不需要软链接,而且它最大的优点是切版本像切目录一样简单:在某个项目目录里执行pyenv local 3.9.7,这个目录下所有 python 命令都指向 3.9.7;到另一个目录里设置pyenv local 3.11,就又切换了。对需要维护多个项目的开发者来说,pyenv 比手工编译管理要省心得多。新手如果觉得自己暂时只需要一个版本,先用源码编译方式就好;等真正开始维护两个以上项目了,再上 pyenv 不迟。
5.4 Linux 里换 pip 源与虚拟环境
新装的 Python,先检查一下 pip 是否正常:
/usr/local/python3.9/bin/pip3.9 --version然后同样设置国内镜像源:
/usr/local/python3.9/bin/pip3.9 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple装好 pip 之后,在项目目录里创建虚拟环境:
cd ~/my_project python3.9 -m venv venv source venv/bin/activate激活后终端前面会出现 (venv) 字样,之后的 pip install 都只装进这个环境里,不会污染全局 Python。用完了输入deactivate退出环境。这个机制和 Windows 上 PyCharm 自动创建的虚拟环境是同一个原理:每个项目一套库,互不干扰。
6. 新手够用的 Linux 常用命令速查与真实场景
6.1 文件与目录操作:先掌握这八个
装了 Linux 不会命令等于白装,但别慌,新手阶段真正要记的并不多。我的经验是先掌握文件操作的一组基础命令:
| 命令 | 作用 | 示例与说明 |
|---|---|---|
pwd | 查看当前所在目录 | 不知道自己在哪就敲它 |
ls | 列目录内容 | ls -l看详细信息,ls -a看隐藏文件 |
cd | 切换目录 | cd /home/user绝对路径,cd ..返回上级 |
mkdir | 创建目录 | mkdir -p a/b/c可以一次性创建多级目录 |
cp | 复制文件 | cp main.py /tmp/复制到 /tmp 目录 |
mv | 移动或重命名 | mv main.py app.py就是改名 |
rm | 删除文件 | rm -rf dir强制递归删除,慎用! |
find | 查找文件 | find . -name "*.py"找当前目录下的所有 py 文件 |
使用建议:rm 命令我见过最多的悲剧就是把重要目录删了。当你输入 rm -rf 开头的一串命令时,先回车前看一眼路径,尤其是 sudo rm -rf 这种组合,一旦写错就把系统文件删没了,虚拟机直接废掉,只能快照恢复。所以每台刚装好的 Linux 我都会建议先给 /、/home、/etc 这种关键目录建立条件反射:看到 rm 就停下来想三秒。
6.2 权限、进程、资源查看:理解 Linux 的运维门槛
运维向的命令窗口有另一组高频操作。权限管理上chmod 755 file是把文件权限设置为所有者可读写执行、组用户和其他用户可读执行,数字对应关系是 7=rwx、6=rw-、5=r-x,这个规则面试高频考;chown user:group file用来改文件归属。日常开发里,你在 Windows 上习惯的图形化右键改属性,在 Linux 里全靠这两条命令支撑。
进程和资源查看也是必备技能:ps aux | grep python查看 python 相关进程,top实时看 CPU 和内存占用,free -h看内存总量和剩余量,df -h看磁盘空间。在 Linux 下跑服务时,这些命令就是你的体检工具——程序突然变慢、端口被占、磁盘满了,全靠它们定位。网络排查方面,ping测连通性,curl测 HTTP 接口,ss -tlnp查看端口监听情况,加 sudo 能看到具体是哪个进程在监听。
搞开发的还躲不开一个命令:tail。看程序日志就用tail -f /var/log/app.log,-f 参数的含义是持续跟踪文件末尾的新增内容。不知道这个参数,排查线上问题只能一遍遍手动刷新日志文件,效率极低。
6.3 包管理与服务管理:一套命令走天下
Linux 的软件安装方式和 Windows 完全不同。Windows 是下载 exe 双击安装,Linux 是用包管理器从仓库拉取安装。Ubuntu 下最常用的就是 apt 家族:
sudo apt install 软件名 # 安装 sudo apt remove 软件名 # 卸载 sudo apt update # 刷新软件列表 sudo apt upgrade # 升级已安装软件服务管理则是 systemctl 家族:
sudo systemctl start 服务名 sudo systemctl status 服务名 sudo systemctl enable 服务名 # 设置开机自启这两个命令族是 Linux 运维操作的基石。比如你要装一个 nginx,就是sudo apt install nginx,然后sudo systemctl start nginx,再sudo systemctl enable nginx让它开机自启。这种"一条命令装软件、一条命令管服务"的体验,习惯了之后会感觉比 Windows 的安装向导高效太多。
6.4 一个真实的综合场景:把 Windows 写的脚本迁到 Linux
把前面所有东西串起来,我们做一个完整的小案例。假设你在 Windows 上写了一个自动抓取网页标题的 Python 脚本,现在要在 Linux 上跑起来。完整流程是这样的:
把脚本文件从 Windows 复制出来。虚拟机处于 NAT 网络时,最简单的方式是用共享剪贴板,直接把代码内容粘贴到 Linux 桌面新建的文本文件里。文件命名 script.py。
进入脚本所在目录,创建虚拟环境:
cd ~/Desktop python3.9 -m venv venv source venv/bin/activate- 安装脚本依赖:
pip install requests beautifulsoup4- 运行脚本:
python script.py如果脚本需要长时间运行,比如定时批量抓取,不能让它在终端里占着,可以用 nohup 让它后台运行:
nohup python script.py > output.log 2>&1 &这里的> output.log是把程序输出写入日志文件,2>&1是把错误信息也重定向到同一个日志,&表示后台执行。之后随时用tail -f output.log看运行状态。
这是新手在 Linux 上第一个"有实际价值"的完整操作闭环,把它跑通,你对 Linux 的掌握程度就已经超过了那些只背命令却不知道为什么用的人。
7. 常见问题排查实录:从 Windows 到 Linux 的翻车现场
7.1 Windows 端的经典报错与解法
错误一:命令行里敲 python 提示"不是内部或外部命令"。原因基本是安装时没勾 Add Python to PATH。解决方法是重新运行安装程序,选 Modify,勾选 Add Python to PATH,或者手动在系统环境变量的 Path 里加入 Python 安装目录和 Scripts 目录。改完环境变量必须重新打开命令行窗口才能生效。
错误二:pip 安装包时网络超时或者极慢。不用怀疑是自己网络问题,就是默认源在国外。执行pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple换上国内镜像后,再装同样的包速度能快几十倍。如果某个包在镜像源上还没有,临时指定 pypi 官方源:pip install 包名 -i https://pypi.org/simple。
错误三:PyCharm 新建项目时找不到解释器。确认你已经勾选过 Add Python to PATH,然后在新项目窗口选择 Add Interpreter,手动指定 python.exe 路径。竟然找不到的话,回命令行执行where python查出实际路径,再用那个路径添加。有一种情况是 PyCharm 扫描不到微软商店版的 Python,那种发行版路径在系统环境变量里是隐藏的,手动添加也不行,直接卸载再装官网版即可。
错误四:第一次启动 PyCharm 特别卡,CPU 占用高。这是因为社区版在做索引扫描,硬盘慢的话会持续几分钟。解决办法是给 PyCharm 增加内存上限,修改安装目录下 bin 里的 pycharm64.exe.vmoptions 文件,把 -Xmx 参数从默认 2048m 调到 4096m(前提是你的物理内存够)。装完 SSD 和内存足够的前提下,这个卡顿大概率会消失。
7.2 Linux 编译安装 Python 时的典型坑
源码编译最容易崩的环节就是缺依赖。如果你看到报错信息里带no module named '_ssl'、ModuleNotFoundError: No module named '_ctypes'、或者Could not find the TLS/SSL之类的字样,基本上就是没装上面提过的 libssl-dev、libffi-dev。解决办法也不是重新下载源码,而是装好缺失依赖后,重新执行make clean、./configure,再make。缺依赖这事在 Ubuntu 桌面版上尤其常见,因为它默认安装的编译组件不完整。
另一个经常踩的问题是磁盘空间不足。编译 Python 会在当前目录生成大量临时文件,整个源码目录加安装目录需要约 2GB 空间。如果虚拟机的虚拟硬盘只给了 10GB,装完系统后基本告急,编译到一半就报No space left on device。所以前面建议虚拟硬盘给 25GB 以上,真到了不够用的地步,可以清理/tmp/Python-3.9.7源码目录释放空间。
还有不少新手会直接在命令行里执行sudo python3.9 -m pip install ...。在 Ubuntu 里,sudo 环境下的 PATH 通常会忽略 /usr/local/bin 这类自定义路径,结果提示找不到 pip3.9。我的建议是:使用 Python 自带的虚拟环境,避免 sudo 安装任何 Python 包。虚拟环境隔离后既不需要 sudo,又不会污染系统 Python,遇到权限类错误的概率大大降低。
7.3 问题排查速查表
| 症状 | 大概率原因 | 解决思路 |
|---|---|---|
| Windows 敲 python 没反应 | PATH 没有配置 | 重装勾选 Add to PATH 或手动加环境变量 |
| pip 显示"不是内部或外部命令" | 安装时未勾选 pip 组件 | 修改安装,勾选 pip;或用 python -m pip |
| pip 下载超时 | 默认源在国外 | 配置国内镜像源 |
| PyCharm 找不到解释器 | PATH 问题或装了商店版 Python | 手动 Add Interpreter,指定 python.exe |
| PyCharm 运行报"no Python configured" | 未配置解释器 | 新建项目里选择系统解释器 |
| Linux 编译 Python 报 _ssl 缺失 | 缺少 libssl-dev | 安装依赖后 make clean 重新编译 |
| Linux 敲 python3.9 提示找不到 | 软链接未建或 PATH 未含 | 检查 /usr/local/bin 软链接 |
| venv 激活后 pip 仍指向全局 | 没正确使用 source 激活 | 执行source venv/bin/activate |
尾声:环境装完只是开始
这套从 Windows 到 Linux 的环境链路,我自己在带新人时已经走过无数遍了,每次帮别人排查到最后,发现 90% 的问题都集中在"版本没选对"、"PATH 没配好"、"依赖没装全"这三点上。所以如果你只是照着装了一次,过两周又忘了某个步骤,很正常,再装一次就能记住。我个人实际操作中的体会是:装环境的本质是训练一种"精准操作的习惯"——选择版本前先查兼容性,动系统配置前先想后果,出错了第一件事是看完整报错信息而不是重装。这套习惯,比环境本身值钱得多。
最后再分享一个小技巧:虚拟机里折腾完 Linux 后,在 VirtualBox 里对刚刚装好的干净系统做一个快照,然后随便玩。玩坏了恢复快照,五分钟满血复活。等你把 Ubuntu 里放 Python 环境、写 Python 脚本、用 systemctl 跑服务这几件事都顺溜了,再去买一台便宜云服务器,你会发现自己在 Windows、虚拟机、云端三台环境之间自由切换的能力,已经超过很多写了两年业务代码却不敢碰服务器的人。