注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
本教程通过为 JupyterLab® 或 RStudio® Workbench 设置工作区,介绍了 Code Workspaces。
所有代码工作区都由 Palantir 平台的代码库支持。这使得代码工作区能够拥有行业标准的版本控制功能,如分支、合并和提交历史,允许其他用户查看代码并安全地在同一工作区操作。
以前,代码工作区和相关代码库由单独的资源表示。现在,代码工作区和相关代码库由单一资源表示,即代码库。从 Foundry 中的任何文件夹选择代码库将自动打开相关的 Jupyter 或 RStudio® 工作区。
此更改适用于新的代码工作区,不会影响现有的代码工作区和代码库,它们将继续作为单独的资源存在。
要启动代码工作区,请打开 Code Workspaces 应用并导航到常规选项卡。然后,选择一个文件夹来创建您的代码工作区。
拥有项目 Editor
或 Owner
角色的用户可以修改代码工作区的设置。拥有项目 Viewer
角色的用户可以启动工作区。您可以选择您的主文件夹作为位置,但这可能会导致您的代码工作区和数据被限制在一个项目中。
选择要启动的工作区类型。目前,支持的工作区是 JupyterLab 和 RStudio® Workbench。
然后,设置您想创建的工作区的支持代码库的名称和位置。如果您正在创建 RStudio® 工作区,您将能够选择一个许可证。在大多数情况下,许可证将自动选择。
每个启动工作区的用户将运行自己的独立会话。如果两个或多个用户将使用同一工作区,确保所有用户对底层代码库具有 Viewer
权限或更高。有关代码工作区的更多信息,请参见上面的底层代码库。
高级设置允许您定义空闲时间和代码工作区的资源配置文件。这些设置可以在工作区的设置面板中随时修改,通过选择右上角的齿轮图标访问。
用户无法直接在底层代码库中发布变换,因为该库已定制用于 Code Workspaces 的基础设施。所有代码必须从代码工作区发布。
您可以通过导航到数据选项卡,然后选择添加数据集 > 导入数据集,直接从 Foundry 中的源导入数据。任何从代码工作区当前项目外部导入的数据(包括用户的主文件夹)都需要添加引用。
或者,对于尚未被引入 Foundry 的数据,选择上传和读取本地数据,以直接从您的设备导入数据。
数据集视图不能用作代码工作区中的导入数据集。相反,在必要时将数据集视图复制到新数据集或现有数据集中。
您可以通过导航到左侧面板中的软件包选项卡,或直接使用 Conda 或 PyPI 为 Jupyter® 和 CRAN 为 RStudio® 安装软件包,来导入软件包到代码工作区。
JupyterLab® 工作区支持从 Conda 或 PyPI 安装软件包。默认情况下,Code Workspaces 暴露 conda-forge
和 pypi.org
。您可以通过将其他频道添加到支持的代码库并重新启动代码工作区,将其添加到代码工作区。
JupyterLab® 中的 Conda/PyPI 环境可以在 JupyterLab®、应用或通过托管环境变换的工作流中一致恢复。
您可以从软件包选项卡中浏览软件包,并选择您希望安装的软件包。这将自动在新的 JupyterLab® 终端中为您执行安装命令。
要手动安装软件包,您可以在 JupyterLab® 终端中使用 maestro env conda install <packages>
安装 Conda 软件包,使用 maestro env pip install <packages>
安装 PyPI 软件包。
查看在 Jupyter® 笔记本中托管的 Conda/PyPI 环境以获取更多信息。
直接使用 mamba
和 pip
安装软件包现在已被弃用。
RStudio® 工作区支持从 CRAN、Posit™ Package Manager 或 Bioconductor 安装软件包。默认情况下,Code Workspaces 暴露所有的 Posit™ Public Package Manager ↗ 以及 Bioconductor ↗。您可以通过将其他频道(如 MRAN)添加到支持的代码库并重新启动代码工作区来添加它们。
要安装软件包,您可以使用 renv
,因为 renv
支持认证的 CRAN 频道。
您可以从软件包选项卡中浏览软件包,并选择您希望安装的软件包。这将为您生成一个安装命令,您可以复制并粘贴到 RStudio® Workbench 中执行。通常,CRAN 软件包使用 renv::install("<package>")
安装,Bioconductor 软件包使用 renv::install("bioc::<package>")
安装。
为了让同一工作区的其他用户查看您的代码,您必须将代码发布到您正在工作的分支。
请注意,发布您的代码将导致 CI 检查运行,这将发布每个注册的 Code Workspace 应用的新版本。作为最佳实践,我们建议将代码工作区集中在单一类型的任务上(例如搭建应用、分析数据、编写数据变换或搭建模型),而不是尝试在单个代码工作区中完成多个独立的工作流。
未发布的更改可以在源控制侧面板中查看。非必填提供提交信息,然后选择同步更改来发布您的代码。当折叠时,文件更改的数量会显示在源控制图标上。
您可以分支您的代码工作区、检出分支并通过分支管理器执行其他版本控制活动。
要创建或查找分支,请使用屏幕顶部的分支选择器。选择分支选择器会打开一个菜单,显示现有分支的列表。或者,可以通过选择创建新分支来创建新分支。如果您有未发布的代码更改,系统将提示您在检出所选分支之前进行同步。
与在 Foundry 其他地方分支相同,代码工作区中可用的数据来自您当前所在的分支(具有回退)。如果您将数据写入输出数据集,数据将写入您当前的分支。
您可以通过选择提议更改将您的分支合并到主分支。在提议更改后,将出现一个拉取请求(PR)预览。
您可以通过选择界面右上角的共享来共享您的代码工作区。
如果代码工作区和代码库是单独的资源,您还必须共享底层库上的权限,以便其他人看到您工作区中的代码。
拥有项目 Editor
或 Owner
角色的用户可以修改代码工作区的设置。拥有项目 Viewer
角色的用户可以启动工作区。
您可以通过选择界面右上角的活动 > 重启工作区手动重启代码工作区(例如,获取配置更改)。
这将导致新的会话处于初始状态。工作区将自动重启,并包含所有已提交到支持代码库的更改。但是,工作区将不包含重启前状态中的所有内容,包括导入的数据、存储在内存中的变量、安装的软件包等。
在重启工作区之前,应用将自动创建一个检查点并提示您同步最新更改。
您可以选择活动 > 恢复检查点以将工作区恢复到先前检查点的状态。有关更多信息,请参见下面的检查点部分。代码工作区在工作区重启后不会自动恢复到先前的检查点。
首次打开 Code Workspaces 的用户将获得一个空白工作区,并在 /home/user/repo
中克隆支持库。
Code Workspaces 会话在没有用户活动时自动关闭,最多可持续 24 小时(有关自动关闭的更多信息,请参见高级设置文档)。
当会话关闭时,所有相关状态都会在 Foundry 中以检查点的形式持久化,并在同一用户下次打开代码工作区时恢复。这允许用户在关闭时的时间点继续工作。
Code Workspaces 有两种保存现有工作的方式:手动代码同步和自动检查点。
我们建议依赖同步到底层代码库的代码(作为代码的一部分进行所需的软件包安装),而不是依赖于工作区检查点。代码同步将有助于确保工作流的弹性,并促进与其他可能无法访问给定检查点的用户的协作。
代码同步是手动操作,也是保存代码工作区中现有工作的推荐方式。同步代码意味着将您的文件提交到工作区的支持代码库。通过代码同步保存的任何工作都会永久保存在库中,/home/user/repo
文件夹中的所有内容都会作为该同步的一部分存储。代码同步不会保存现有状态,如变量内容、环境中的已安装软件包、数据或代码单元格输出。工作区的同步历史可以通过工作区的支持代码库进行查询。我们通常建议经常同步您的代码,以便维护更改历史,并确保所有相关工作得到妥善和永久的存储。
要在工作区中保存所有现有更改,请选择工作区右上角的同步更改。一旦成功,更改将提交到工作区的支持库,您可以通过选择右上角的齿轮图标,然后选择打开代码库来访问。
检查点是一个功能,可以自动拍摄工作区现有状态的快照,以便在会话之间恢复。与仅存储已提交文件的代码同步不同,检查点会存储 /home/user/repo
(包括未提交的代码更改)、/home/user/libs
(包括已安装的软件包)、/home/user/envs
(Conda 环境)和 /home/user/data
(用户下载的额外数据)的所有内容。在 RStudio® 的情况下,存储在内存中的变量存储在 /home/user/repo/.RData
中。
默认情况下,Code Workspaces 每十分钟保存一次给定用户会话的检查点。检查点不在用户之间共享。Code Workspaces 还会在工作区关闭之前创建一个检查点(例如,通过手动重启、手动关闭或自动关闭)。不活动的代码工作区不会生成任何新的检查点,任何给定的检查点最多可持续 30 天。因此,由于不会有有效的检查点可用,未触及超过 30 天的工作区只能恢复从同步到支持库的工作。检查点旨在作为一个安全网,以在会话之间持久化工作区的状态;检查点不应作为主要保存形式依赖。我们强烈建议经常同步工作区中的现有工作。
恢复检查点将重新启动工作区并将主文件夹恢复到创建检查点时的状态。
RStudio® 和 Shiny® 是 Posit™ 的商标。
Jupyter®、JupyterLab® 和 Jupyter® 标志是 NumFOCUS 的商标或注册商标。
所有引用的第三方商标(包括标志和图标)仍为其各自所有者的财产。不暗示任何从属关系或认可。