Positron 教程7 --- 工作区

写在前面

Positron 是 Posit 公司开发的新一代数据科学 IDE,为 Python 和 R 语言提供了全方位数据科学支持,同时还提供了 AI 辅助功能。本系列推文为 Positron IDE 官方文档的中文笔记,软件可能随时更新,建议配合官方文档一起阅读。

官网教程:https://positron.posit.co/folder-templates.html


目录

  • 1 文件夹模板

  • 2 远程 SSH

  • 3 开发容器

1 文件夹模板

New Folder from Template 功能可帮助您更快地启动新项目。当您希望避免手动设置,或确保项目从一开始就包含所有推荐的文件和设置时,请使用此功能。无需运行多个设置命令,只需进行几次选择,Positron 就会自动为您完成所有设置。如果您希望:

  • 节省时间并避免手动设置步骤

  • 为您的语言或框架从一个即用的环境开始

1.1 模板内容

当您使用文件夹模板时,Positron 会创建一个新的项目文件夹并配置以下项目:

  • 环境目录 :一个专用的环境(例如 Python 的 .venv),以便您可以在不影响其他项目的情况下安装包。

  • 版本控制 :一个 .git 目录和一个包含针对您语言或框架常见模式的 .gitignore 文件。

  • 目录结构:针对您的模板类型推荐的文件夹和文件,以便您的项目从一开始就井井有条。

  • 解释器实例:一个新的解释器会话会自动启动,随时准备运行您的代码。

  • 编辑器:在编辑器中打开一个无标题文件,或使用您选择的解释器启动一个 notebook。

1.2 使用模板

要打开 New Folder from Template 对话框,请选择左上角的"New"下拉菜单或右上角的工作区切换器。从菜单中选择"New Folder from Template"选项以调出对话框。

您也可以通过运行命令面板中的 Workspaces: New Folder from Template... 命令来调出对话框。

设置完成后,您的项目就准备好进行开发了。您可以在当前窗口或新窗口中打开该文件夹。默认情况下,Positron 会为您选择的解释器启动一个会话。您可以在设置中自定义此行为。更多详情,请参阅解释器启动指南。

1.3 关于 Python 模板

Python 模板会创建一个带有隔离环境的项目。这可以防止包版本之间的冲突,并使您的工作更具可复现性。

您可以选择使用 pyproject.toml 文件进行高级依赖项管理。

有关环境管理器的更多信息,请参阅支持的环境管理器指南。有关 Python 解释器发现的详细信息,请参阅发现 Python 安装指南。

1.4 关于 R 模板

R 模板可帮助您创建具有正确 R 版本的项目。

您可以选择使用 renv 来实现可复现性,但这是一个高级选项。除非您熟悉 renv 并且项目需要严格的依赖项管理,否则大多数用户应保持此复选框未选中状态。

renv 是一个管理项目依赖项的 R 包。它会创建项目中 R 包的快照,并将其保存在 renv.lock 文件中。这对于需要共享项目或确保精确包版本的高级用户很有帮助。了解更多关于 renv 的信息。

2 远程 SSH

Positron 支持远程 SSH 会话。此功能允许 Positron IDE 的前端(用户界面)在一台机器上运行,而后端(文件、项目、Python 和 R 会话等)在另一台机器上运行。两台机器使用普通的安全 Shell(SSH)连接进行通信。

2.1 系统要求

远程 SSH 会话可以从 Positron 桌面应用支持的任何操作系统(包括 macOS、Linux 和 Windows)发起。但是,您要连接的系统必须运行 Linux;不支持原生的 Windows 和 macOS 远程主机。

请注意,远程 SSH 仅在桌面应用上受支持。您无法从 Posit Workbench 上的 Positron Pro 会话中使用远程 SSH。

运行远程 Positron 服务器至少需要 2 GB RAM,但对于实际的数据科学工作,远程主机上预计至少需要 4 GB 或更多 RAM。

2.2 创建连接

要创建连接,请使用 Ctrl+Shift+P 打开命令面板并输入"Remote Menu"。运行 Remote SSH: Show Remote Menu 命令。

The Remote SSH menu

从那里,运行 Connect to Host 命令。系统将提示您输入主机名和凭据。

如果您不想每次都输入主机名,可以将连接信息添加到您的用户 SSH 配置中(例如,Unix-like 系统上的 ~/.ssh/config)。然后,您将来可以使用远程资源管理器视图再次连接到该系统。使用 View: Show Remote Explorer 命令打开它。

2.3 远程会话

您可以通过 Positron 窗口左下角的小指示器来识别远程 SSH 会话。

Remote SSH Status Indicator

这些会话与"常规"Positron 桌面会话之间存在一些显著差异。

文件

在远程主机内部,资源管理器选项卡将显示来自远程主机的文件,而不是本地系统的文件。

设置

当连接到远程主机时,您会看到两个不同的"设置";一个是本地机器的设置,另一个是应用于远程机器的设置。

扩展

大多数扩展在 Positron 的后端运行。这意味着您第一次连接到远程主机时,不会安装任何扩展。您需要在远程主机上重新安装您希望在该主机上使用的任何扩展。

与资源管理器视图一样,扩展视图将帮助您查看哪些扩展安装在本地,哪些安装在远程主机上。

终端、R 和 Python

所有终端以及您的 R 和 Python 会话都将在远程主机上运行。

端口转发

当您在 Positron 中运行 Web 应用程序(例如 Shiny 应用程序)时,Positron 会自动将远程主机上的端口映射到本地机器上的端口。

例如,请注意,在 :6868 上运行的此 Shiny 应用程序会自动在本地主机上获得一个转发的端口 6868。"端口"选项卡显示当前从远程主机转发到本地主机的端口。Positron 会在可用时尝试在两台主机上使用相同的端口。

Port Forwarding for Local Web Content

2.4 长时间运行的会话

默认情况下,当您关闭 Positron 时,Positron 将强制结束您的 R 和 Python 会话。如果您希望即使在关闭 Positron 后也让会话保持运行(例如,将数据保留在内存中或让长时间运行的计算继续),您可以使用 kernelSupervisor.shutdownTimeout 设置告诉 Positron 的内核监视器保持会话运行。

Shutdown Timeout Settings

请注意,此设置仅在重启 Positron 后生效!

恢复会话

长时间运行的会话与您使用它们的工作区相关联。当您重新打开一个包含活动会话的工作区时,如果 Positron 发现任何仍在运行的会话,它将自动重新连接到这些会话。

关闭超时详情

由于监视器在没有附加任何 UI 的情况下运行您的 R 和 Python 会话,因此它无法判断您何时完成了它们。为了防止会话无限期运行并消耗远程主机上的资源,监视器将在一段时间不活动后关闭它们。这段时间由 kernelSupervisor.shutdownTimeout 设置控制。

关闭超时永远不会中断正在忙于运行代码的内核;它只有在内核空闲且未连接到任何 Positron 窗口时才开始倒计时。

如果您只想在退出 Positron 时允许内核完成任何正在运行的计算,请使用 when idle 设置。

还有一个选项允许内核永远运行;如果您使用此选项,您的 R 和 Python 内核将永远不会退出,除非您手动终止进程或从 Positron 中关闭它们。我们通常不建议使用此选项,除非您熟悉远程主机上的进程管理,因为它可能导致资源耗尽。

2.5 工作原理与故障排除

当 Positron 第一次连接到新主机时,它会执行以下操作:

  1. 建立到主机的 SSH 连接。

  2. 形成正确的 Positron Server 二进制文件的名称和下载 URL,例如 positron-reh-linux-x64-2025.01.0-39.tar.gz

  3. 在远程主机上,将此二进制文件下载到 ~/.positron-server 并解压。

  4. 在远程主机内启动无头 Positron Server。

  5. 从前端连接到服务器。

注意

客户端和服务器必须使用完全相同的 Positron 版本。我们为常规每月版本和每日构建版本都提供了 Positron Server 构建,因此您可以将其用于远程 SSH 会话。如果您使用新客户端版本的 Positron 连接到远程主机(例如,因为有新的每月版本可用),则会下载并解压相应新版本的 Positron Server。

两个最常见的问题是:

  • 下载 Positron Server 二进制文件时遇到 404。当您尝试对不支持的主机类型使用远程 SSH 时会发生这种情况,例如连接到 macOS 主机。

  • 启动 Positron Server 二进制文件时遇到错误。当您尝试对 Positron 不支持的 Linux 版本使用远程 SSH 时会发生这种情况。

有时,远程服务器上的安装可能会损坏,例如,如果下载中断。如果您在远程服务器上安装 Positron 时遇到错误,可以尝试删除远程主机上的 ~/.positron-server 目录,然后重新连接。

如果您需要使用不同的 URL 来下载 Positron Server(例如,由于网络限制使用本地副本,或者即使未自动检测到特定版本也要强制使用),您可以编辑 remoteSSH.serverDownloadUrlTemplate 设置。

Remote SSH: Server Download Url Template Setting

3 开发容器

Positron 支持开发容器的预览版。使用开发容器,您可以在临时容器内运行会话,从而完全控制执行环境,并促进可复现性和隔离性。

3.1 系统要求

macOS、Windows 和 Linux 上的 Positron Desktop 支持开发容器。但是,容器本身必须从受支持的 Linux 版本构建。您还需要一个与 Docker 兼容的容器运行时,例如 Docker Desktop 或 Podman。

请注意,您不能在已经处于远程环境(例如远程 SSH、WSL 和 Posit Workbench 上的 Positron Pro 会话)中使用开发容器。

3.2 启用

重要提示

开发容器是一项实验性功能,必须手动启用。请选择启用 dev.containers.enable 设置以开启该功能。

Dev Containers experimental setting

或者将其添加到您的 settings.json 中:

复制代码
{
    "dev.containers.enable": true
}

3.3 使用

在容器中打开文件夹

打开一个包含 .devcontainer.json 文件的文件夹。您将看到如下提示:

Reopen in Container

点击通知以在容器中重新打开。

或者,如果您已关闭或禁用通知,请使用命令 Dev Containers: Reopen in Container

附加到正在运行的容器

Remote Explorer

  1. 打开远程资源管理器视图

  2. 展开"开发容器"部分

  3. 右键单击正在运行的容器,然后选择"附加到当前窗口"或"附加到新窗口",或使用右侧的某个按钮

重建容器

当您对 devcontainer.jsonDockerfile 进行更改后:

  • Dev Containers: Rebuild Container - 使用缓存重建

  • Dev Containers: Rebuild Without Cache - 从头开始完全重建

  • Dev Containers: Rebuild and Reopen in Container - 重建并自动重新打开

在容器内开发

Positron 的开发容器功能使用 VS Code 中可用的命令和设置的一个子集。阅读 VS Code 关于在容器内开发的指南以获取更多信息。

3.4 限制

与 Code OSS 核心不同,VS Code 的开发容器支持不是开源的。它由一个专有的、闭源的扩展提供,并在商业许可下发布。因此,Positron 的实现是新颖的,并不具备所有相同的功能。具体来说,它具有以下限制:

  • Positron 不支持基于 musl 的 Linux 发行版(如 Alpine)(跟踪问题);容器必须运行 Positron 已支持的 Linux 版本。

  • 仅支持单容器配置(不支持 docker compose)。

  • 没有提供用于创建或编写 devcontainer.json 文件的工具或模板。

  • 每个项目仅支持一个容器。

  • 不支持 Docker 卷,仅支持常规挂载。

  • 在最近使用列表中,开发容器显示的是远程路径而不是本地路径(例如 /workspaces/foo)。

  • 不支持 VS Code 容器自定义。

  • 不支持 RemoteCommand

  • 在已经处于远程的环境中(例如远程 SSH、WSL 和 Posit Workbench)不支持容器。

  • 当已经在容器内时,容器管理功能(查看/附加到正在运行的容器)不可用。

3.5 远程会话

一旦进入容器,您的会话行为将类似于远程 SSH 会话,就像您在容器上启动了 SSH 服务器并使用远程 SSH 连接到它一样。有关更多信息,请参阅远程 SSH。

--------------- 结束 ---------------

注:本文为个人学习笔记,仅供大家参考学习,不得用于任何商业目的。如有侵权,请联系作者删除。

相关推荐
木囧2 小时前
PyCharm手动创建虚拟环境
ide·python·pycharm
爱就是恒久忍耐4 小时前
VSCode里clangd如何配置跳转
ide·vscode·编辑器
SmartManWind4 小时前
vscode中claude-code插件wsl中开启自动模式
ide·vscode·编辑器·claude code
pie_thn4 小时前
嵌入式应用开发笔记之web端设备控制台
嵌入式·编程
Watink Cpper5 小时前
VSCode通过ChatGPT5.5登陆codex:sign-in could not be complete 问题解决方案
ide·vscode·编辑器·codex·gpt5.5
相醉为友6 小时前
Trae IDE WSL2/SSH 环境网络故障排查笔记
ide·笔记·ssh
qq_195821657 小时前
2. 开发环境搭建:IDE安装与配置、交叉编译工具链、调试工具准备
ide
noipp16 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷