Table of Contents
Open Table of Contents
一、安装 Python 与 R 的环境
PyCharm 和 RStudio 分别是 Python、R 两种代码语言的工作利器,不过随着 VSCode 相关生态的逐渐完善,使用 VSCode 进行 Python 和 R 的 coding 已经趋于成熟。相较于 VSCode,PyCharm 和 RStudio 也略显笨重。因此,本文将详细介绍如何基于 VSCode,完成 Python 和 R 两种代码环境的一体化配置。
1. 配置 Python 环境
机器学习技术日新月异,不过也导致了 Python 环境的管理问题,时常导致多个项目依赖包的不兼容问题,而 conda 为此提供了一个解决方案。不过,Anaconda 实在是过于庞大,个人而言更青睐一个小体量的工具,也因此选择了 MiniForge。
Miniforge 的安装十分简单,macOS 上在终端运行下述代码,安装即可。
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
在 Windows 上则需前往 GitHub 下载名称为 Miniforge3-Windows-x86_64.exe 的安装包,下载后双击安装即可。
值得注意的是,macOS 会将 conda 命令直接添加到系统环境,但 Windows 系统中在默认设置下,Miniforge 不会自动添加到系统环境中,因此直接在终端运行下述命令可能会报错。解决方法有两个,其一是官方推荐的做法,即通过 Miniforge Prompt (在开始菜单中) 来进行以下代码;其二是在安装时勾选添加到系统环境中。
Windows 中打开终端为“win+R”,然后输入“cmd”。macOS 中打开终端的方式为,“cmd+空格”,输入“Terminal”,回车打开即可。打开终端后,依次输入以下代码:
-
初始化 conda。运行即可,如果报错,请确保系统环境中已添加 Miniforge。
conda init -
值得注意的是,第一次
conda init之后,需要重启终端,确保上述修改已生效。重启终端后,再次输入相同命令,然后会出现如下图“No action taken”。此时说明,conda 的初始化设置已经完成,继续后续步骤即可。 -
创建虚拟环境。
name是虚拟环境的名称,可以随意设置,例如 nlp、cv 等等。python=3.12声明了安装的 Python 版本是 3.12,按需设置即可。此外还在代码中声明安装uv包,安装该包的原因见第四步。conda create -n name python=3.12 uv -
激活环境。注意,请将
name修改为上一步中你自定义的名称。这一步之后即可通过 pip 来安装包了。每次启动终端时,会默认启用base环境,这是 conda 的基础环境。若想在虚拟环境中进行包的管理与安装,请先激活该环境。conda activate name -
安装包。在激活环境后,就可以安装包了。 conda 中安装包有多种方式,其中最基本的是
conda install package,使用 conda 安装包时,会自动解析环境依赖,确保各个包的版本是相互兼容的。不过由于 conda 的解析较慢,后续开发了 mamba 命令来加快包的解析和安装速度,因此也可以使用mamba install package。不过,这两者都面临一个问题,就是解析速度较慢,以及对于部分包是缺失的,例如hanlp,以及最新的 PyTorch 也不官方支持conda/mamba安装了。 因此更推荐使用uv来管理包,它的解析和安装速度极快,能够安装几乎绝大多数的包,且语法简单,与pip几乎相同,只需要uv pip install package即可安装。uv pip install pandas # 安装基于 CUDA 12.6 的 PyTorch uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
至此,Python 环境即已经配置完成。
2. 配置 R 环境。
R 的配置相对简单,同样的也可以通过包管理器安装,macOS 请在终端运行 brew install —cask r,Windows 请运行 winget install rproject.r。同样的,也可以前往 R 的官网下载安装包来安装。
到这里 R 的安装就已经完成了。不过 R 为了适配更多老旧机器,默认的 Blas 计算库性能较为保守,在处理大数据时运行效率可能会相对较低。如果你的机器是20年后生产的,建议参考以下方法优化:
对于 Windows 系统:
- 下载 OpenBLAS 的最新文件,解压后提取 bin 文件夹中的
libopenblas.dll。 - 复制两个该文件到
C:/Program Files/R/R-x.x.x/bin/x64。 - 将文件夹中的
Rblas.dll和Rlapack.dll文件命名为Rblas.dll.bak和Rlapack.dll.bak。 - 将复制的两个文件,分别命名为
Rblas.dll和Rlapack.dll。
对于 MacOS 系统:
- 打开终端,运行
brew tap homebrew/science && brew install openblas ln -sf /usr/local/opt/openblas/lib/libopenblas.dylib /Library/Frameworks/R.framework/Resources/lib/libRblas.dylib
二、配置 VSCode
与 Python 与 R 的安装相同,安装 VSCode 也有包管理器和安装包两种安装方式。使用包管理器安装,macOS 用户请运行 brew install --cask visual-studio-code,Windows 用户请运行 winget install microsoft.visualstudiocode。与之前相同,也可以前往 VSCode 的官网来下载安装包以安装。
在安装完成后,建议登录 Microsoft 或 GitHub 账号,以进行跨终端的同步设置,避免在不同系统环境,或是重装系统后重复配置 VSCode。
1. 安装插件
插件是 VSCode 中简化操作的重要工具,以下是 Python 和 R 工作中的常用插件。以下,是我常使用的一些插件。当然,在部分功能上有许多相似的插件,这部分插件的选择更加符合我的个人偏好。例如,用于自动格式化 Python 代码的插件 charliermarsh.ruff,就有 Microsoft 出品的 Black Format 等替代品。
在 VSCode 的扩展栏中搜索下列插件的名称点击安装即可。注意,可能部分插件不是必须的,例如 ms-vscode-remote 的相关插件,是用于运行 WSL 或是连接远程服务器用的。下列插件中,个人觉得较为重要的插件会在插件末尾加上 * 号说明,请根据需要进行安装。
# 基础设置
ms-ceintl.vscode-language-pack-zh-hans * 为 VSCode 添加汉语 一般会自动安装
usernamehw.errorlens * 精确到行的报错信息
cweijan.vscode-office * 浏览 Markdown Word 图片 等常见格式文件
esbenp.prettier-vscode * 自动格式化大部分代码
formulahendry.code-runner * 自动配置各种语言的运行代码
github.copilot GitHub 提供的代码助手
github.copilot-chat GitHub 提供的代码聊天助手
ms-toolsai.datawrangler 可视化编辑数据,并转为 Python 代码
kylebarron.stata-enhanced 查看编辑 Stata 代码
pkief.material-icon-theme 图标美化插件
zhuangtongfa.material-theme 主题美化插件
# Python
charliermarsh.ruff * 自动格式化 Python 代码
ms-toolsai.jupyter * 在 VSCode 中使用 Jupiter
ms-python.python * 基础插件,一般打开 py 文件后就会自动安装,下同
ms-python.vscode-pylance *
# R
reditorsupport.r * 基础插件,一般打开 R 文件后就会自动安装
quarto.quarto 编辑 rmd 的重要插件
2. 配置插件及编辑器
在安装完插件之后,还需要进行设置。在 VSCode 中,提供了可视化的设置界面(Command / Ctrl + , 即可唤出)和 JSON 文件(设置界面中,右上角的 📄 状图标)两种设置方法。
(ps: 点了设置之后,找到下图的三个图标,然后点击三角形旁边那个类似翻转文件的图标,进去就是JSON文件,请继续配置。)
👉 以下是我的 JSON 设置文件,以供参考。
{
// Basic Settings
"files.autoGuessEncoding": true,
"files.autoSave": "onFocusChange",
"files.associations": { "*.rmd": "quarto", "*.qmd": "quarto" },
"editor.wordWrap": "on",
"editor.formatOnSave": true,
"editor.formatOnType": true,
"editor.formatOnPaste": true,
"editor.tabCompletion": "on",
"editor.suggestSelection": "first",
"editor.acceptSuggestionOnEnter": "on",
"editor.suggest.snippetsPreventQuickSuggestions": false,
"editor.inlineSuggest.enabled": true,
"editor.minimap.enabled": false,
"editor.guides.bracketPairs": true,
"editor.wrappingStrategy": "advanced",
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.fontFamily": "Maple Mono NF CN",
"editor.fontLigatures": true,
"editor.quickSuggestions": {
"other": true,
"strings": true,
"comments": true
},
"resmon.show.battery": false,
"window.commandCenter": false,
"github.copilot.enable": { "*": true, "quarto": true },
"prettier.tabWidth": 4,
"explorer.confirmDelete": false,
"explorer.compactFolders": false,
"explorer.confirmDragAndDrop": false,
"terminal.integrated.lineHeight": 1.5,
"terminal.integrated.inheritEnv": true,
"terminal.integrated.fontLigatures.enabled": true,
"terminal.integrated.shellIntegration.enabled": false,
"terminal.integrated.enableMultiLinePasteWarning": "never",
"terminal.integrated.profiles.windows": {
"PowerShell": { "source": "PowerShell", "args": ["-NoLogo"] }
},
"security.workspace.trust.enabled": false,
"security.allowedUNCHosts": ["wsl.localhost"],
"markdown.preview.fontFamily": "Maple Mono NF CN",
"workbench.startupEditor": "none",
"workbench.layoutControl.enabled": false,
"workbench.activityBar.location": "bottom",
"workbench.iconTheme": "material-icon-theme",
"workbench.colorTheme": "One Dark Pro",
"workbench.editorAssociations": {
"*.copilotmd": "vscode.markdown.preview.editor",
"file:/**/*.md": "quarto.visualEditor",
"file:/**/*.csv": "jupyter-data-wrangler",
"file:/**/*.dta": "jupyter-data-wrangler",
"file:/**/*.xls": "jupyter-data-wrangler",
"file:/**/*.xlsx": "jupyter-data-wrangler",
"file:/**/*.parquet": "jupyter-data-wrangler"
},
"oneDarkPro.editorTheme": "Shadow",
"oneDarkPro.color": {
"coral": "#D4D3CA",
"fountainBlue": "#82AAFF",
"lightDark": "#616161",
"malibu": "#80CBC4",
"purple": "#C792EA"
},
"typescript.suggest.paths": false,
"javascript.suggest.paths": false,
"extensions.ignoreRecommendations": true,
// Python
"python.defaultInterpreterPath": "C:/Users/Walton/miniforge3/python.exe",
"notebook.output.wordWrap": true,
"notebook.formatOnSave.enabled": true,
"notebook.markup.fontFamily": "Source Han Mono",
"notebook.codeActionsOnSave": {
"notebook.source.fixAll": "explicit",
"notebook.source.organizeImports": "explicit"
},
"code-runner.executorMap": {
"python": "$pythonPath -u $fullFileName"
},
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
}
},
// R Language
"r.plot.useHttpgd": true,
"r.rterm.option": ["--no-save", "--no-restore", "--quiet"],
"[r]": {
"editor.defaultFormatter": "REditorSupport.r",
"editor.tabSize": 2
},
"[quarto]": {
"editor.defaultFormatter": "quarto.quarto",
"editor.formatOnType": false,
"editor.formatOnPaste": false,
"editor.rulers": [80]
},
"comment-divider.subheaderAlign": "left",
"comment-divider.languagesMap": {
"r": ["#"]
}
}
注意,其中有几个需要自定义的选项。
editor.fontFamily规定了编辑器使用的字体。我选用的字体是 Maple Mono,是 一款中英文等宽的圆体字体。若有别的偏好字体,可以在这里进行修改。workbench.iconTheme和workbench.colorTheme,定义了使用的主题。
其余的选项可以根据需要来进一步修改。
最后,为了更好的交互效果,还需要在 R 语言中安装三个必要的包,其中 languageserver 是必须安装的。httpgd 则是提供了一个更好的查看画图结果的界面,而 lintr 则是提供了一些代码书写风格的检查和修改建议。关于 R 的进一步配置,可以参考我的这篇博客。
install.packages(c("languageserver", "httpgd", "lintr"))
三、配置 CUDA 或 MPS(可选)
1. 在 Windows 平台配置 CUDA
- 创建虚拟环境。
conda create —name nlp python=3.12,这里创建了一个名为 nlp,Python 版本为 3.12 的虚拟环境,由于许多包适配的版本不一致,不建议安装太新的 Python 版本。 - 在激活环境后安装 pytorch,前往官方网站,选择合适的选项后运行相关命令即可,当前最新的命令为
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia。 - 在当前,Windows 系统中,Tensorflow 2.10 版本之后已经不适配,因此不推荐安装 Tensorflow 的 GPU 版本,若确实需要安装,建议配置 WSL 之后,在 WSL 中安装。
若确实需要在 Windows 系统中安装 Tensorflow,2.10 版本的 Tensorflow 要求 CUDA 版本为 11.2,cuDNN 版本为 8.1(其他版本点此查阅)。随后前往英伟达官网,分别下载并安装对应版本的 CUDA 和 cuDNN。此外,需要安装 GPU 驱动,下载安装 GeForce Experience 即可。在激活环境后安装 tensorflow,运行
conda install tensorflow=2.10。
2. 在 Mac 平台配置 MPS
依次在终端运行以下代码即可。
conda create --name nlp python=3.12
conda activate nlp
conda install tensorflow tensorflow-metal
conda install pytorch::pytorch torchvision torchaudio -c pytorch
3. 在 WSL 或 Linux 平台配置 CUDA
依次在终端运行以下代码即可。
conda create --name nlp python=3.12
conda activate nlp
conda install tensorflow
# 前往官网更新代码 https://pytorch.org/get-started/locally/
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
最后,可以通过下述代码验证是否能够调用 GPU。
import tensorflow as tf
import torch
print("pytorch:", torch.cuda.is_available()) # Linux 和 Window 应返回 True
print("pytorch:", torch.backends.mps.is_built()) # macOS 应返回 True
print("tensorflow:", tf.config.list_physical_devices("GPU")) # 应返回有 GPU0