R语言安装这件事,看起来是入门第一步,实际上我见过太多人卡在这一步:装完了打不开、装完发现装到别的库去了、装包报一串看不懂的编译错误、中文用户名导致启动直接闪退。所以这篇我不打算只给你一条“下一步、下一步、完成”的流水线,而是把R语言安装这件事从组件关系、平台差异、配置项取舍到报错排查,一次性讲透。适合三类人:完全没碰过R的新手、换电脑重装的老用户、以及在服务器上要搭分析环境的人。看完你至少能自己判断“这个报错是安装问题还是包的问题”,不用每次都去搜半天。
1. 动手之前先搞明白:R、RStudio、Rtools 到底各管什么
很多人第一次接触就懵:R和RStudio是不是二选一?Rtools又是干嘛的,不装行不行?这三个东西的关系如果一开始就搞错,后面九成的困惑都来自这里。
1.1 三个组件的分工与依赖顺序
我习惯用厨房类比。R是灶台和锅——真正干活的计算引擎,它自带一个极简的命令行界面,长得非常朴素,但功能完整。RStudio IDE是操作台——切菜板、调料架、抽油烟机,它本身不计算任何东西,只是把R的输入输出包了一层好看的壳,让你能管理脚本、看数据、看图、管项目。Rtools是工具箱——当你需要安装那种需要“现场编译”的包时,它提供编译器、make 之类的底层工具。
依赖顺序非常明确:先装 R,再装 RStudio,Rtools 放到最后按需装。反过来装会出问题,RStudio 找不到可用的R会话时,启动后就是一片空白,很多人以为装坏了,其实只是顺序错了。另外 Rtools 只对 Windows 有意义,macOS 和 Linux 的编译工具链本来就在系统里,不用单独装。
一个常被忽略的点:RStudio 只是个前端,所以你在 RStudio 控制台里执行R.version看到的信息,是底层 R 的版本,不是你装的那个 IDE 的版本。排查问题时先确认清楚“我现在说的版本是哪个东西的版本”,能省掉大量扯皮。
1.2 版本号怎么挑:别追新,也别用过期货
R 的版本发布节奏很规律,每年大概几个小版本。我的建议是:新装机器用当前稳定版的最新次版本,不要用刚发出来一周的版本。原因是生态里一部分包对新版本的支持有延迟,尤其是那些依赖 C++ 编译的包,新版本刚出来那几天偶尔会出现兼容问题,等一两个月就都跟上了。
更关键的是别用太老的版本。R 4.0 之后 Windows 彻底放弃了 32 位支持,很多新包的依赖(比如某些字符串处理和图形栈的包)已经要求 R 4.1 甚至更高。如果你非要装个 3.x,那装包的时候会看到一大片 “is not available for this version of R”,非常打击积极性。
版本号的读法也要说清楚:4.4.1里,4 是大版本,4 是次版本,1 是修订号。修订号只修 bug 不加功能,所以 4.4.1 和 4.4.2 之间无脑升级没问题。真正需要留意的是次版本变化,比如 4.3 → 4.4,这类升级时最好重新装一遍相关的编译工具链。
1.3 装之前的三个硬性准备
这三条是我每次帮人装都会先检查的,能挡掉后面八成的麻烦。
第一,安装路径不要有中文和空格。虽然现在的 R 对路径的容忍度比早年好很多,但很多第三方包在编译时调用外部工具,那些工具对空格和中文的处理依然很糟糕。建议 Windows 下直接装到D:\R\R-4.4.1这种结构,短、纯英文、无空格,以后找起来也方便。
第二,给自己一个可写的库目录。R 有两类包目录:系统级的(安装目录下)和个人级的。系统级目录普通用户没写权限,所以安装包时如果默认往那里装,就会报权限错误。正确做法是把个人库路径显式指到一个你自己有完全控制权的地方,后面第 5 节会讲具体怎么写。
第三,检查你的用户名。Windows 下如果你的用户目录是C:\Users\张三这种中文名,R 在默认情况下会尝试把用户库和配置放在这个目录下,个别版本的启动器和部分包会因为编码问题直接失败,表现为点开图标一闪就没了,或者报R session aborted。这个问题的解法不是改名(太折腾),而是用环境变量把R_USER和R_LIBS_USER显式指向一个英文路径。
注意:这三条准备工作的成本不到五分钟,但它能避免的排查时间往往是几小时。别跳过。
2. Windows 平台:从下载到第一次跑通
Windows 是绝大多数人的第一个平台,安装包本身做得很成熟,但向导里有几个选项如果随手点“下一步”,会给你后面留下隐患。
2.1 安装包怎么选:win.exe 里的门道
进入官方下载页后,Windows 下面只有一个入口,点进去会看到一个类似R-4.4.1-win.exe的文件。这个就是唯一需要的安装包,大小几十兆。这里要澄清一个常见误解:网上有些老教程会说“要下 32 位版和 64 位版两个”,那是 R 4.0 之前的历史了,现在只有一个通用安装包,内部只包含 64 位。
下载时如果速度很慢,可以换成国内镜像站点,路径结构是一样的,只是把域名换掉。判断镜像是否可用的土办法是看它的目录时间戳是否新鲜,如果最新版本号比官网落后两三个版本,说明这个镜像同步不勤,换一个。
下载完成后,建议顺手校验一下文件大小是否和页面标注一致。我遇到过一次下载中断导致安装包损坏,安装到一半弹出解压失败,重下就好了——这类问题没有技术含量,但不知道原因时很折磨人。
2.2 安装向导逐屏拆解(含每一步的选择理由)
下面按向导的实际顺序走一遍,每一屏说清楚为什么这么选。
第一屏,选择语言。这里选中文或英文都行,它只影响安装向导自身的界面语言,不影响 R 的工作界面。我通常选英文,因为网上搜报错时英文界面更容易和别人的截图对上。
第二屏,许可协议。开源协议,接受即可,没有可选项。
第三屏,安装位置。这是全文最该认真看的一屏。默认是C:\Program Files\R\R-4.4.1。如果你C盘紧张,或者想以后同时保留多个版本做对比测试,改成D:\R\R-4.4.1。改的时候只改动盘符和上级目录,保留最后的版本号文件夹,这样以后装新版本时两者共存,互不干扰。
第四屏,组件选择。会列出几项:核心文件、64位文件、消息翻译(多语言提示)、文档(HTML帮助、PDF手册)。我的选择是核心 + 64位 + 消息翻译全勾,文档建议勾上。文档体积不大,但离线时能直接在帮助里查函数说明,比断网时抓瞎强得多。
第五屏,启动选项。问你是否要自定义启动配置。这一屏默认是 “No”,保持默认就好。选 Yes 会进入一个勾选界面,让你决定是否使用站点级配置文件和环境配置文件,新手很容易在这里勾错,导致后续设置options()时不生效。记住这个位置,等第 5 节讲镜像配置时,如果你发现改了配置没反应,回来检查这里。
第六屏,开始菜单文件夹。默认即可,就是个快捷方式放哪的问题。
第七屏,附加任务。两个勾选框:创建桌面快捷方式、把 R 关联到.RData文件。桌面快捷方式看个人习惯,我一般不勾,因为平时都是从 RStudio 进去的。.RData关联建议勾上,双击一个保存的工作空间文件就能恢复现场,偶尔很管用。
第八屏,完成。点完成后会打开一个纯命令行窗口,那个黑底白字的界面就是 R 本体,说明装成功了。
2.3 装完必须验的三件事
别急着装 RStudio,先把 R 本体验证一遍。
第一件,看版本信息。在那个刚弹出的 R 控制台里输入:
R.version.string正常会返回类似"R version 4.4.1 (2024-06-14)"的字符串。如果报错说找不到这个对象,说明你进的根本不是 R 的控制台,可能误开了系统的命令行窗口。
第二件,看安装根目录。
.Rhome返回的路径应该和你安装时选的位置一致。如果这里指向了一个你没印象的目录,说明这台机器上之前装过 R,你刚才启动的是旧版本。这种情况很常见,尤其是接手别人电脑的时候。
第三件,命令行能不能调起来。打开系统的命令行工具,输入:
R --version如果返回版本信息,说明 R 的bin目录已经在环境变量 PATH 里了,这是安装包自动完成的。如果提示“不是内部或外部命令”,说明 PATH 没配上,需要手动加。把 R 安装目录下的bin\x64加到系统环境变量的 Path 里即可。这一步的意义在于:很多脚本化的工作、以及某些包调用外部 R 进程时,依赖的就是命令行能找到R。
3. macOS 与 Linux:不同平台的不同打法
这两个平台的安装逻辑和 Windows 差别不小,尤其 macOS 现在有双架构问题,Linux 则要看你是用发行版的包管理还是自己编译。
3.1 Apple Silicon 与 Intel 双架构的坑
macOS 的官方下载页会给两个.pkg:一个带arm64字样,一个是普通的 x86_64。M 系列芯片必须选 arm64 版。这不仅是快慢问题——如果你在 M 系列机器上装了 x86_64 版,它会在兼容层下运行,编译类包的安装成功率会明显下降,而且报错信息往往非常迷惑。
判断自己的架构很简单,终端里输入:
uname -m返回arm64就装 arm64 版,返回x86_64就装普通版。这里有个陷阱:如果你曾在终端里用过某些会切换架构的工具,uname -m可能返回的不是真实架构,可以用sysctl -n machdep.cpu.brand_string交叉验证一下。
安装.pkg需要管理员权限,双击按提示走即可,全程没几个选项。装完之后,终端里能不能直接输入R启动是验证的关键。如果提示找不到命令,通常是因为/usr/local/bin不在 PATH 里,或者安装时选了非标准位置。可以手动建立一个软链接,把 R 安装目录下的可执行文件链到/usr/local/bin/R。
另一个 macOS 特有的坑:系统自带的某些命令行工具在首次编译包时会要求你确认安装,弹窗里如果不点同意,后面装包会一直失败。装完 R 之后,顺手在终端跑一次:
xcode-select --install已经装过会提示“已安装”,没装过会弹窗引导,花几分钟装完,后面省事。
3.2 Linux 发行版的两种安装路径
Linux 下装 R 有两条路,选哪条取决于你的需求。
路线一,用发行版仓库。Debian/Ubuntu 系:
sudo apt update sudo apt install r-base r-base-devr-base是运行环境,r-base-dev是编译包需要的头文件和工具链,两个都要装,只装前者后面装包会大面积失败。RedHat 系则是sudo dnf install R R-devel。这条路的好处是省心,依赖自动处理;坏处是仓库里的 R 版本通常偏旧,可能落后一到两个次版本。
路线二,从项目自己的软件源安装。官方维护了 Debian 和 RedHat 系的软件源,配置好之后apt装到的就是较新的版本。这个方式适合需要新版本特性的场景,代价是要改系统的源列表,公司环境里如果做了源管控可能需要额外审批。
如果只是想在一台机器上快速搞一个干净的特定版本环境,还有第三条路——用 conda 这类环境管理器:
conda create -n r44 -c conda-forge r-base=4.4 conda activate r44好处是版本隔离、不污染系统、删掉环境就干干净净。代价是它的 R 和系统 R 是两套,某些需要链接系统库的包会有额外的路径问题。我个人在服务器上做多版本切换时用这个方式,在本地开发机上还是用系统安装。
3.3 服务器环境(无图形界面)的注意事项
在服务器上装 R,最常见的两个坑是图形库缺失和编译依赖不全。
R 的某些基础功能在编译时会对图形库有依赖,即使你根本不画图,装包时也可能因为找不到字体配置或图形库头文件而失败。Debian 系上,把下面这批一起装上能省掉大量“装到一半报错”的情况:
sudo apt install build-essential libcurl4-openssl-dev libssl-dev \ libxml2-dev libfontconfig1-dev libharfbuzz-dev libfribidi-dev \ libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev这些库对应的是网络请求、加密、XML解析、字体渲染、图片读写等常见能力,几乎每个数据分析环境都会用到其中几个。一次性装完,比一个个试错快得多。
另一个问题是以源码方式编译 R 本身。如果发行版仓库版本太旧必须自己编译,配置阶段的参数值得多花点心思:
./configure --prefix=/opt/R/4.4.1 --enable-R-shlib --with-blas --with-lapack--enable-R-shlib生成共享库,某些需要嵌入R的工具有它才行;--with-blas --with-lapack让矩阵运算走系统优化过的数学库,跑大规模计算时差距很明显。编译用make -j$(nproc)并行能快不少。
4. RStudio 的安装与首次配置
RStudio 装起来比 R 简单得多,基本没有需要决策的地方,但首次启动后的几项设置决定了你后面的使用体验。
4.1 安装顺序与版本匹配
再次强调顺序:R 在前,RStudio 在后。如果先装了 RStudio,它启动时会去找系统里的 R,找不到就显示一个空界面。补救办法有两个:装完 R 之后重启 RStudio;或者在 RStudio 里按住特定按键启动(不同版本方式不一样,不确定性大),更稳妥的就是直接重装一遍 RStudio。
版本匹配方面,一般不需要操心,新版 IDE 向下兼容老版本 R 没什么问题。唯一要注意的是极端组合:非常新的 IDE 配非常老的 R(比如 R 3.x),少数新功能会不可用,界面上会有提示。本来也不建议用那么老的 R,所以实际影响很小。
安装包同样分平台,macOS 上也有 arm64 和 x86_64 之分,规则和上一节一致。Windows 版是一个.exe,双击安装,路径同样建议纯英文无空格。
4.2 首次启动后我必改的五个设置
打开 RStudio 后,先别急着写代码,花五分钟改这几项,后面会反复受益。
第一项,设置默认工作目录。在全局选项里找到默认工作目录的设置,把它改成一个固定的、你专门用来放分析项目的文件夹。默认值往往是用户主目录,会导致你的桌面和文档里散落一地.Rhistory和.RData文件,非常乱。或者更好的做法是——养成用项目(Project)的习惯,每个分析一个目录,进去自动切工作目录,根本不用手动setwd()。
第二项,编码统一成 UTF-8。在保存相关设置里把默认文本编码设为 UTF-8。这一步能避免中文注释在别人机器上变成乱码,也能减少读取文件时的编码猜错。
第三项,关掉工作空间自动恢复。默认情况下 RStudio 退出时会保存当前环境,下次启动自动加载。这个设计对新手友好,但对正经分析是灾难——你会不知不觉带着一堆上个项目的变量做新分析,出现“明明没定义过这个变量怎么有值”的诡异情况。关掉它,让每次启动都是干净的环境,需要用数据就老老实实从脚本跑一遍。
第四项,换掉默认镜像。全局选项里的包管理那一栏,把包仓库地址改成一个响应快的镜像,否则装包时下载速度可能慢到你以为卡死了。具体怎么配见下一节。
第五项,打开行内输出或调整字体。纯体验项,但控制台字体建议换成等宽且中英文宽度协调的,不然中文注释和代码混排时对不齐,看得很累。
5. 装完之后真正要做的配置:镜像、编译工具链、库路径
这一节是分水岭。同样的安装包,配置对了后面一路顺畅,配置不对就是无穷无尽的报错。很多人所谓的“R装不好”,其实都是这三块没弄对。
5.1 CRAN 镜像的三种配置写法与优先级
R 装包默认会问你要用哪个仓库,或者用一个全局默认值。这个值可以写在三个地方,生效优先级从高到低是:当前会话里手动设置 > 用户级配置文件 > 安装目录下的站点级配置文件。
写法一,临时设置(只在当前会话有效):
options(repos = c(CRAN = "https://mirrors.example.edu.cn/CRAN/"))适合临时换源试一下。窗口一关就失效。
写法二,写进用户级配置文件(推荐)。在你的用户主目录下创建或编辑.Rprofile文件,加入上面那行。这个文件每次启动都会自动执行,所以设置永久生效,而且只影响你自己的账户,不动系统。找这个文件的位置可以用:
file.path(Sys.getenv("HOME"), ".Rprofile")如果文件不存在,用file.edit()创建并写入即可。
写法三,写进站点级配置文件。位置在 R 安装目录下的etc\Rprofile.site。影响这台机器上所有用户。适合给团队统一配置,但不适合个人折腾,因为一旦写错,所有人都受影响,而且需要管理员权限才能改。
关于镜像选择,判断标准很简单:下载速度、同步及时性、是否支持 HTTPS。同步及时性可以看它的目录里最新版本号是不是跟得上,落后太多的镜像在新版本发布初期会出现“包已发布但镜像上找不到”的情况,这时候临时切回官方源就行。
注意:如果你改了
.Rprofile发现没生效,回去检查第 2.2 节第五屏那个启动选项,是不是把用户配置文件给关掉了。这是最典型的“配置写了但没用”的原因。
5.2 Rtools 与编译工具链的对应关系
Windows 下,只要你要装的包里有 C/C++/Fortran 代码,就需要 Rtools。不是所有包都需要,但热门的包里有相当一部分需要,所以迟早要装。
版本对应关系必须严格,这是硬约束。装错了 Rtools 版本,R 根本认不出来。对应表大致如下:
| R 版本 | 对应 Rtools | 说明 |
|---|---|---|
| 4.4.x | Rtools44 | 当前主流组合 |
| 4.3.x | Rtools43 | 仍在使用中的稳定版本 |
| 4.2.x | Rtools42 | 老项目常见 |
| 4.1.x | Rtools40 | 不建议新装 |
装 Rtools 本身没什么难度,一路下一步即可,但有两个细节。第一,安装路径建议保持默认的C:\rtools44这种短路径,不要塞进Program Files里带空格的目录。第二,安装时有个选项问是否修改系统 PATH,建议选否,然后靠 R 自己去找。原因是在系统 PATH 里塞进一整套编译工具,有可能和机器上已有的其他开发环境冲突,症状是别的工具突然编译不了了,很难联想到是R的锅。
装完之后验证:
pkgbuild::has_build_tools(debug = TRUE)返回TRUE就说明工具链能被正常识别。如果返回FALSE,输出信息里会告诉你缺什么,通常是路径没配置好,可以通过设置环境变量RTOOLS44_HOME指向安装根目录来解决。
macOS 和 Linux 用户跳过这一节,你们的编译器在系统里,装好xcode-select或build-essential就够了。
5.3 个人库路径与权限问题
这个问题极其高频,几乎每个新手都会撞上一次:装包时报Permission denied或者cannot open file。
原因很直白:R 默认会试图把包装到安装目录下的library文件夹里,那个位置普通用户没有写权限。R 其实会在启动时提示你“当前没有可写的库”,并询问是否创建一个个人库,很多人随手点了否或者根本没注意看。
正确的做法是显式指定个人库路径。有两种方式。
方式一,环境变量。设置R_LIBS_USER指向一个你有完全控制权的目录,比如D:/R/library/4.4。这个目录初始不存在没关系,第一次装包时R会自动建。
方式二,写进.Rprofile:
.libPaths(c("D:/R/library/4.4", .libPaths()))注意路径分隔符,在 R 里用正斜杠或者双反斜杠都行,单反斜杠会被当成转义符,这是个初学者常犯的小错误。
验证:
.libPaths()输出的第一项应该是你设定的路径。装完包如果library()报“没有这个包”,八成就是装到了一个不在.libPaths()里的目录。这时候用.libPaths()看有没有你设置的路径,用find.package("包名")看能不能找到,两头一对就清楚问题在哪了。
6. 报错现场:常见问题与排查速查表
下面这些是我这几年被问得最多的问题,按出现频率排序。建议先扫一遍表格,遇到时能立刻定位。
6.1 安装阶段的问题
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 双击图标闪退 | 用户目录含中文/特殊字符 | 设置R_USER指向英文路径 |
| 安装到一半失败 | 安装包下载不完整 | 重新下载,校验文件大小 |
安装后命令行找不到R | PATH 未配置 | 手动添加bin\x64到 Path |
| 启动后版本和预期不符 | 机器上有多个旧版本 | 用.Rhome确认实际路径 |
| RStudio 打开是空白界面 | 先于 R 安装或未识别到 R | 装 R 后重装/重启 RStudio |
闪退那个问题值得多说一句。它的迷惑性在于没有任何报错信息,就是打不开。判断方法:在系统命令行里直接用完整路径启动 R(比如"D:\R\R-4.4.1\bin\x64\R.exe"),如果这时能正常启动并打印出错误,那就说明是启动器层面的编码问题,而不是程序本身坏了。
6.2 装包与编译阶段的问题
装包环节的报错种类最多,但归归类其实就几大族。
“package is not available for this version of R”。意思是这个包在当前版本下没有预编译好的二进制包,需要源码编译或者版本不对。先确认自己的 R 版本是不是太老,再确认包名拼写,最后考虑是不是需要先装 Rtools 走源码编译。
“non-zero exit status”。这是编译失败的通用报错,信息量极低,真正的错误在上面几十行里。必须往上翻日志,找第一个出现的error:字样,那才是根因。我见过太多人盯着最后一行non-zero exit status到处求助,其实答案就在上面。
“there is no package called 'xxx'”。装成功了但找不到,基本就是装到了别的库目录,参考 5.3 节。
“Failed to lock the directory”。上一次装包时中断了,留下了一个锁目录。找到报错里给出的路径,手工删掉那个以00LOCK开头的文件夹即可。这个错误在磁盘满、进程被强杀之后特别容易出现。
依赖包安装失败导致主体失败。报错里会提到某个依赖名。单独装那个依赖,看它具体报什么错,解决后回头再装主体。盲目重试整体安装是浪费时间。
6.3 中文与编码相关的问题
这类问题在中文环境里特别高频,但只有少数人会意识到根本原因是编码。
读入 CSV 中文变乱码。典型表现是读进来的中文字段变成一堆问号或方块。原因是文件本身的编码和R默认的读取编码不一致。老文件很多是 GBK 系编码,新文件一般是 UTF-8。处理方式是在读取函数里显式指定:
df <- read.csv("data.csv", fileEncoding = "GBK", encoding = "UTF-8")fileEncoding说的是文件本身用什么编码存,encoding说的是读进内存后按什么编码解释。这两个参数容易搞混,记住前者管“读的时候怎么解”,后者管“读进来之后怎么标”。
脚本里的中文注释在别人机器上乱码。根源是文件保存时用的不是 UTF-8。RStudio 里在保存相关设置把默认编码固定为 UTF-8,然后在打开疑似乱码的文件时,用“重新打开并指定编码”的功能试几次,找到正确的那个再另存。
Windows 下绘图中文显示成方框。这是字体问题不是编码问题,需要在绘图设备里指定一个含中文字形的字体族。用par(family = "字体名")或者在设备参数里指定,具体字体名先查系统里有哪些可用,别硬编码一个不存在的名字。
注意:编码问题有个通用排查思路——永远先确定“哪个环节的编码错了”。是文件存的编码,是读取时声明的编码,还是显示时的编码?三段分别验证,比一股脑改设置有效得多。
7. 我踩过的坑与几条实用建议
写到这里,技术细节差不多了。最后分享几条很难从文档里查到、但实际用起来很值钱的经验。
7.1 关于多版本共存
如果你需要同时保留几个 R 版本(比如复现老项目、测试新版本兼容性),Windows 上直接装到不同的版本目录就行,互不干扰。但要注意两点:Rtools 的版本必须和当前使用的 R 版本匹配,切换R版本时别忘了切对应的 Rtools;个人库路径最好按版本分开,比如D:/R/library/4.4和D:/R/library/4.3,混在一起会碰到“包是用旧版本编译的,新版本加载不了”这种问题,报错信息还挺隐蔽的,只说什么“包已损坏”。
macOS 上多版本共存稍微麻烦一点,因为安装包会覆盖/Library/Frameworks/R.framework的软链接。做法是装完后手动改软链接指向不同版本,或者干脆用环境管理器隔离。Linux 上多版本最省事,用环境管理器新建环境即可。
7.2 给新手的四个不要
不要在装 R 之前就先装一堆包。顺序错了后面全是麻烦。
不要把工作目录设成桌面。桌面会堆满各种自动生成的历史文件和会话文件,两周就看不下去了。
不要用中文命名脚本和变量。不是不能用,是跨平台交换文件时容易出问题,尤其是发给别人在别的系统上跑的时候。
不要一报错就重装。R 的安装本身很稳定,绝大多数报错来自配置和依赖,重装往往解决不了问题还浪费时间。先看报错内容,按第 6 节的思路定位,效率高得多。
7.3 装好之后的第一步该怎么走
装完并验证通过之后,我建议马上做一件事:写一个三行的脚本并跑通它。读一个简单的 CSV、做个汇总、画一张图、保存。这四步走完,你就确认了整条链路(R 本体、IDE、绘图设备、文件读写)都是通的。这比在空环境里发呆有用得多,也能提前暴露那些潜在的权限和路径问题。
具体到画图这一步,如果图能在 IDE 的绘图面板里正常出来,并且用代码把图存成文件也成功,那说明图形设备这块没问题;很多人在后面做项目时才发现导出中文图乱码,回头排查成本就高了,不如一开始就验一遍。
另外,把第一次成功跑通的这个小脚本连同那份数据和一份说明放在一个项目目录里,作为你的“环境自检模板”。以后换电脑、重装环境、或者帮同事装,直接跑一遍这个模板就知道环境是不是健康。这个习惯我已经保持了好几年,每次换机器能省下至少半小时的试探时间。