1. 为什么一个环境搭建值得写三千字很多人看到安装Python和PyCharm这个标题第一反应是这有什么好写的下一步下一步不就完了我刚开始带新人的时候也这么想直到我连续三年在同一个坑里看到不同的人摔进去——有人装完Python发现终端里敲python弹的是应用商店有人在Mac上装完PyCharm发现解释器指向的是系统自带的2.7版本有人在Linux服务器上折腾一下午发现pip装包一直报权限错误。环境搭建这件事看起来是体力活实际上是整个开发链路里最容易埋雷的环节。你后面写的每一行代码、跑的每一个脚本、装的每一个第三方库全都建立在环境是对的这个前提上。这个前提一旦歪了后面所有的问题排查都会变成玄学。这篇内容我打算把三个平台Mac、Windows、Linux的安装流程全部拆开讲一遍不只是告诉你点哪个按钮更重要的是告诉你为什么这么点、哪些选项背后有坑、装完之后怎么验证环境是真的干净可用。适合完全没碰过Python的新手也适合换了新电脑需要重新配环境的老手——后者往往更容易在我以为我知道的地方翻车。核心关键词就三个Python安装、PyCharm配置、多平台环境搭建。这三个词贯穿全文你如果只关心某一个平台可以直接跳到对应章节但我建议至少把通用原则那部分看完因为三个平台的底层逻辑是相通的。2. 装之前先想清楚版本、路径、权限三件事2.1 Python版本怎么选才不给自己挖坑Python的版本选择是第一个分叉路口。截至我写这篇内容的时候Python 3.12和3.13是主流稳定版本3.9以下的版本很多新库已经不再支持了。我的建议很直接新手无脑选最新的稳定版不要因为某个教程用的是3.8就跟着装3.8。为什么因为Python的版本兼容性策略是向前兼容为主但新库会逐步放弃老版本。你装了一个3.8过半年想用一个新出的库发现它要求3.10以上这时候你就要面临升级还是换库的两难。与其后面折腾不如一开始就装新的。但有一个例外情况如果你要维护一个已有的老项目项目里明确写了依赖某个老版本那就老老实实装那个版本。这种场景下不要自作聪明升级老项目的依赖树可能非常脆弱。还有一个细节是不要用系统自带的Python。Mac和Linux都预装了Python但那是给系统工具用的你动它可能把系统搞出问题。Windows现在也有应用商店版本的Python同样不建议用。正确的做法是自己装一个独立的Python和系统自带的完全隔离。2.2 安装路径里藏着多少坑路径这件事Windows用户尤其要注意。默认安装路径通常是C:\Users\你的用户名\AppData\Local\Programs\Python\Python3xx这个路径本身没问题但问题在于你的用户名如果是中文后面装某些库的时候会出现编码错误。我踩过这个坑一个朋友的Windows用户名是中文装某个科学计算库的时候一直报UnicodeDecodeError排查了两个小时才发现是路径里的中文导致的。解决办法很简单安装的时候手动把路径改成C:\Python312这种纯英文短路径。Mac和Linux的路径问题相对少一些但也要注意不要装在需要sudo权限才能写入的目录里。Linux上如果你用sudo apt install python3装那装出来的Python是系统级的后面pip装包要么加--user要么加sudo非常别扭。推荐的做法是用pyenv或者直接编译安装到用户目录下。2.3 权限管理为什么你的pip总是报错pip报权限错误是新手最常见的挫败点之一。根本原因是你装的Python在系统目录下普通用户没有写入权限pip想往site-packages里写东西就被拒绝了。解决思路有三个层次最差的做法每次pip都加sudo。这会让包装到系统目录污染系统环境而且后面可能出现权限混乱。凑合的做法pip加--user参数装到用户目录下。能用但管理起来比较散。推荐的做法用虚拟环境venv。每个项目一个独立环境互不干扰权限问题自然消失。虚拟环境这件事我在第5章会详细讲这里你先记住一个原则永远不要在系统Python里直接装项目依赖。3. Mac平台从零到能跑代码的完整流程3.1 安装Python的三种方式对比Mac上装Python有三条路官网下载安装包、Homebrew安装、pyenv安装。我把三种方式的优缺点列出来你根据自己的情况选。方式优点缺点适合人群官网安装包图形化界面最简单升级麻烦多版本管理困难纯新手Homebrew命令行一条搞定升级方便需要先装Homebrew有一定命令行基础pyenv多版本切换灵活配置稍复杂需要维护多个项目的开发者我个人的推荐是如果你只用一个Python版本用Homebrew如果你需要多个版本切换用pyenv。官网安装包我不太推荐因为它装完之后路径管理比较乱后面想换版本很麻烦。Homebrew安装Python的命令很简单brew install python3.12装完之后python3.12这个命令就可以用了。注意是python3.12不是python因为Mac系统自带的python命令指向的是系统Python不要动它。pyenv的安装稍微复杂一点brew install pyenv然后在你的shell配置文件.zshrc或.bash_profile里加上export PYENV_ROOT$HOME/.pyenv export PATH$PYENV_ROOT/bin:$PATH eval $(pyenv init -)重载配置后就可以用pyenv install 3.12.0来装指定版本了。3.2 验证Python是否装对了装完之后不要急着装PyCharm先验证Python本身是好的。打开终端依次执行which python3 python3 --version pip3 --versionwhich python3的输出应该是你安装路径下的python3而不是/usr/bin/python3。如果是后者说明你的PATH配置有问题终端找到的还是系统Python。python3 --version应该输出你装的版本号。pip3 --version应该输出pip的版本和它关联的Python版本这两个版本要对应上。注意如果pip3 --version显示的Python版本和你python3 --version不一致说明pip关联到了错误的Python后面装包会装错地方。这种情况需要检查PATH顺序。3.3 PyCharm的安装与首次配置PyCharm有两个版本Community社区版免费和Professional专业版收费。对于纯Python开发社区版完全够用。专业版主要多了Web框架支持、数据库工具、远程开发等功能。下载dmg文件后拖到Applications文件夹就装好了。首次打开会让你选主题、配置插件这些都可以跳过或者随便选后面能改。关键步骤是配置解释器。新建项目的时候PyCharm会让你选Python解释器。这里有个坑PyCharm可能会自动检测到多个Python版本你要手动选你刚才装的那个。具体操作新建项目界面 → Python Interpreter → 点右边的齿轮 → Add Interpreter → System Interpreter → 选择你的Python路径。Mac上Homebrew装的Python通常在/opt/homebrew/bin/python3.12Apple Silicon或/usr/local/bin/python3.12Intel芯片。选好之后PyCharm底部状态栏会显示当前解释器版本。你可以在PyCharm的Terminal里敲python --version验证一下注意PyCharm的Terminal和系统Terminal可能是两个环境以PyCharm里显示的为准。4. Windows平台最容易出细节问题的平台4.1 安装包下载与关键选项Windows用户去Python官网下载exe安装包这里有一个极其关键的选项安装界面底部有一个Add Python to PATH的复选框必须勾上。我见过太多人因为没勾这个装完之后在cmd里敲python提示不是内部或外部命令然后以为装失败了。其实Python装好了只是系统找不到它。补救办法是手动把Python安装目录和Scripts目录加到系统环境变量PATH里但与其后面补不如一开始就勾上。另一个选项是Install Now和Customize Installation。我建议选Customize因为可以自定义安装路径。前面说过路径里不要有中文和空格改成C:\Python312这种最省心。Customize界面里Optional Features那一页的选项建议全勾上特别是pip和py launcher。py launcher是Windows特有的可以让你用py -3.12这种方式指定版本多版本共存的时候很有用。4.2 环境变量配置的两种方式如果你安装时勾了Add Python to PATH环境变量就自动配好了。但如果你没勾或者想手动检查一下可以这样操作打开此电脑右键 → 属性 → 高级系统设置 → 环境变量 → 在用户变量里找到Path → 编辑 → 新增两条C:\Python312\ C:\Python312\Scripts\第一个是Python本体第二个是pip等工具。两个都要加只加第一个的话pip用不了。改完环境变量后必须重新打开cmd才生效。已经开着的cmd窗口读的还是旧的环境变量。验证方式和Mac一样python --version pip --version where pythonwhere python会列出所有能找到的python路径如果第一条不是你装的那个说明PATH顺序有问题需要调整。4.3 PyCharm在Windows上的配置差异Windows版PyCharm的安装没什么特别的一路下一步就行。配置解释器的时候路径通常是C:\Python312\python.exe。有一个Windows特有的问题编码。Windows的默认编码是GBK而Python 3默认用UTF-8。这会导致你在PyCharm里跑脚本输出中文的时候出现乱码。解决办法是在PyCharm里设置File → Settings → Editor → File Encodings把Global Encoding、Project Encoding、Default encoding for properties files全部改成UTF-8。另外PyCharm的Terminal在Windows上默认可能是cmd或者PowerShell。如果你习惯用PowerShell可以在Settings → Tools → Terminal里把Shell path改成PowerShell的路径。PowerShell的语法和cmd有些差异比如设置环境变量的方式不同这个要注意。5. Linux平台服务器和桌面的不同玩法5.1 桌面版Linux的安装策略如果你用的是Ubuntu、Fedora这类桌面版Linux安装方式和Mac类似可以用包管理器或者pyenv。Ubuntu上可以用apt装sudo apt update sudo apt install python3.12 python3.12-venv python3-pip但apt装的版本可能不是最新的取决于你的发行版版本。如果想要最新版还是推荐pyenv。pyenv在Linux上的安装和Mac类似但需要先装一些编译依赖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源码需要的缺了任何一个都可能导致编译失败或者编译出来的Python缺少某个模块。我踩过的坑是漏了libsqlite3-dev结果装出来的Python没有sqlite3模块Django项目直接跑不起来。5.2 服务器环境的注意事项服务器上装Python和在本地装是两回事。服务器通常没有图形界面你只能通过SSH操作而且服务器上往往已经有一个系统Python在跑着一些系统服务绝对不能动它。服务器上的推荐做法是用pyenv装一个用户级的Python或者用conda。pyenv的好处是不依赖系统Python完全独立。服务器上还有一个常见问题是多用户共享。如果一台服务器多个人用每个人装自己的Python比较浪费空间。这时候可以考虑用一个共享的Python安装但虚拟环境各自独立。具体做法是把Python装在/opt/python3.12这种公共目录然后每个人在自己的home目录下创建venv。5.3 Linux上PyCharm的安装与远程开发Linux桌面版的PyCharm安装很简单下载tar.gz解压后运行bin/pycharm.sh就行。可以创建一个桌面快捷方式方便启动。但Linux服务器上通常不装PyCharm的图形界面这时候就要用到PyCharm Professional的远程开发功能。这个功能允许你在本地PyCharm里连接远程服务器代码在服务器上跑编辑在本地进行。配置方式PyCharm Professional → File → Remote Development → SSH填入服务器地址和认证信息然后选择远程的Python解释器。这样你本地写代码实际执行是在服务器上非常适合服务器开发场景。社区版没有这个功能如果你经常需要在服务器上开发可以考虑升级到专业版或者用VS Code的Remote-SSH作为替代方案。6. 虚拟环境三个平台通用的隔离方案6.1 为什么必须用虚拟环境虚拟环境是Python开发里最重要的实践之一没有之一。它的作用是把每个项目的依赖隔离开项目A用Django 3.2项目B用Django 4.2两个互不影响。不用虚拟环境的后果是什么所有包都装在全局Python里版本冲突是迟早的事。你今天装了一个库要求requests 2.25明天另一个库要求requests 2.31pip只能保留一个版本另一个项目就跑不起来了。创建虚拟环境的命令三个平台通用python3 -m venv myenv这会在当前目录下创建一个叫myenv的文件夹里面是一套独立的Python环境。激活虚拟环境Mac/Linuxsource myenv/bin/activateWindowsmyenv\Scripts\activate激活后终端提示符前面会出现(myenv)表示你现在在这个虚拟环境里。这时候pip装的包都只装在这个环境里不会影响全局。退出虚拟环境用deactivate命令。6.2 PyCharm里配置虚拟环境PyCharm新建项目的时候默认就会帮你创建一个虚拟环境位置在项目目录下的venv文件夹。这个默认行为是合理的我建议保持。但如果你打开一个已有项目PyCharm可能没有自动识别虚拟环境。这时候需要手动配置Settings → Project → Python Interpreter → Add Interpreter → Existing environment → 选择项目下的venv/bin/pythonMac/Linux或venv\Scripts\python.exeWindows。配置好之后PyCharm右下角会显示当前解释器你可以点进去快速切换。每个项目用各自的虚拟环境这是最规范的做法。提示虚拟环境文件夹不要提交到git。在.gitignore里加上venv/或.venv/避免把整个环境传到仓库里。6.3 依赖管理requirements.txt的正确用法虚拟环境配好之后怎么记录项目依赖答案是requirements.txt。导出当前环境的依赖pip freeze requirements.txt在新环境里安装依赖pip install -r requirements.txt但pip freeze有个问题它会把所有包都导出包括你手动装的和作为依赖自动装的而且不区分直接依赖和间接依赖。对于小项目无所谓大项目建议用pipreqs这种工具它只导出你代码里实际import的包。pip install pipreqs pipreqs . --encodingutf8 --force这样生成的requirements.txt更干净只包含项目真正需要的包。7. 装完之后怎么验证环境是真的可用7.1 最小验证跑一个Hello World装完Python和PyCharm之后不要急着装一堆库先跑一个最小的验证脚本import sys print(sys.version) print(sys.executable) import sqlite3 import ssl import zlib print(所有标准库模块加载正常)这个脚本验证了三件事Python版本对不对、解释器路径对不对、关键标准库能不能正常导入。sqlite3、ssl、zlib这三个模块是最容易因为编译依赖缺失而装不上的如果它们都能导入说明Python本身是完整的。7.2 进阶验证装一个第三方库试试标准库没问题之后装一个第三方库验证pip和网络pip install requests然后在Python里import requests r requests.get(https://httpbin.org/get, timeout10) print(r.status_code)如果输出200说明pip能用、网络能通、SSL证书没问题。这一步能过基本的环境就齐了。7.3 PyCharm专项检查清单PyCharm这边需要检查的项解释器路径是否指向你装的那个Python项目使用的虚拟环境是否激活编码设置是否为UTF-8Terminal使用的shell是否是你习惯的那个运行配置里的工作目录是否正确这些检查项看起来琐碎但每一个出问题都会导致代码明明没问题却跑不起来的情况。我建议装完环境后花五分钟过一遍这个清单能省下后面几个小时的排查时间。8. 常见问题速查与避坑经验8.1 安装阶段的高频问题问题现象根本原因解决方法终端敲python没反应PATH没配或没生效检查环境变量重开终端pip报权限错误往系统目录装包用虚拟环境或加--user装包报编码错误路径含中文重装到纯英文路径编译安装缺模块编译依赖不全补装对应的-dev包PyCharm找不到解释器路径没选对手动指定Python路径8.2 我踩过的三个印象最深的坑第一个坑是Mac上系统Python和自装Python的混淆。有一次我帮人排查问题他终端里python3 --version显示3.12但PyCharm里跑出来是3.9。查了半天发现PyCharm用的是系统Python终端用的是Homebrew装的。这种两个环境各说各话的情况根源就是解释器路径没统一。第二个坑是Windows上的长路径问题。Windows默认有260字符的路径长度限制Python的包路径有时候会超。表现是装某个包的时候报文件名或扩展名太长。解决办法是开启Windows的长路径支持在组策略或者注册表里改或者把Python装在根目录下缩短路径。第三个坑是Linux服务器上的locale问题。服务器默认locale可能是POSIX导致Python处理中文的时候报错。解决办法是在.bashrc里设置export LANGen_US.UTF-8和export LC_ALLen_US.UTF-8。8.3 环境迁移换电脑怎么办换电脑的时候不要想着把整个Python环境拷过去那样大概率出问题。正确的做法是在新电脑上装好Python和PyCharm把项目代码clone下来创建新的虚拟环境用pip install -r requirements.txt重装依赖requirements.txt里最好锁定版本号比如requests2.31.0而不是requests这样能保证新环境装出来的依赖和旧环境一致。如果有些包在requirements.txt里没有比如你手动装的可以用pip freeze对比一下新旧环境的差异把缺的补上。9. 多版本共存时的管理策略9.1 什么时候需要多个Python版本大部分情况下一个Python版本就够了但有些场景确实需要多版本维护老项目老项目依赖Python 3.8测试代码在不同Python版本下的兼容性某些库只支持特定版本范围这种时候Mac和Linux用pyenvWindows用py launcher。pyenv的常用命令pyenv install 3.12.0 pyenv install 3.9.18 pyenv global 3.12.0 pyenv local 3.9.18global设置全局默认版本local设置当前目录的版本会在目录下生成.python-version文件。Windows的py launcher用法py -3.12 --version py -3.9 --version py -3.12 -m venv myenv用py -版本号的方式指定用哪个Python。9.2 多版本下的PyCharm配置PyCharm支持为每个项目配置不同的解释器。你可以在Settings → Project → Python Interpreter里为每个项目单独指定。如果你用pyenv管理多版本PyCharm可能不会自动识别pyenv装的Python。需要手动添加Add Interpreter → System Interpreter → 浏览到~/.pyenv/versions/3.12.0/bin/python。配置好之后每个项目用各自的Python版本和虚拟环境互不干扰。这是多项目开发的标准姿势。10. 一些让环境更顺手的收尾配置10.1 pip的国内源配置pip默认从官方源下载国内访问有时候会比较慢。可以配置国内镜像源加速pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这条命令会写入pip的配置文件之后所有pip install都会走这个源。如果想临时用官方源加-i https://pypi.org/simple参数覆盖。10.2 PyCharm的实用设置几个我每次装完PyCharm都会改的设置关闭Show tips on startup省得每次启动弹提示开启Show memory indicator方便监控内存占用设置字体和字号默认字体看久了眼睛累配置代码格式化规则保持团队风格一致开启Auto-import写代码时自动补import语句这些设置都在Settings里花十分钟配好后面开发体验会好很多。10.3 环境备份导出你的配置PyCharm支持导出配置File → Manage IDE Settings → Export Settings。导出的zip文件可以在新电脑上导入省得重新配一遍。Python环境本身不需要备份有requirements.txt就够了。但如果你有一些全局的工具脚本建议单独放一个目录管理换电脑的时候直接拷过去。环境搭建这件事说到底就是一次做对长期省心。我见过太多人因为环境问题浪费大量时间其实这些问题在安装阶段花十分钟注意一下就能避免。希望这篇内容能帮你把环境这一步走稳后面的开发才能顺畅。