01-SAS 安装与vscode 扩展

作者

Simon Zhou

发布于

2025年3月11日

修改于

2025年5月6日

1 SAS 在 Windows 的安装

2 SAS 在 Linux 的安装

3 SAS 与 vscode 扩展

SAS VS Code 扩展轻量级,可在任何地方运行,并允许您集成 SAS 和其他语言。该工具还提供直接连接到 SAS Viya 和 SAS 9 并运行代码的功能。

  • SAS 语法突出显示和帮助、代码完成和代码片段

  • 用于连接 SAS 和运行代码的配置文件配置

  • 支持 SAS Viya 和 SAS 9 连接

  • 访问 SAS 内容和库

  • 为 SAS、SQL、Python 和其他语言创建笔记本

扩展程序可在 GitHub 上找到仓库与原代码:[vscode-sas-extension](https://github.com/sassoftware/vscode-sas-extension)

更多关于 SAS 与 vscode 的信息可以访问:[SAS Extension for Visual Studio Code](https://developer.sas.com/programming/vs_code_extension)

3.1 安装插件

在 vscode 的扩展页面搜索 “sas” ,第一个 “official SAS ···“ 即为正确扩展:

4 配置路径

Before you can run SAS code, you must configure the SAS extension to access your SAS 9.4 (remote or local) server or a SAS Viya server and add a connection profile.

在运行 SAS 代码之前,您必须配置 SAS 扩展以访问 SAS 9.4(远程或本地)服务器或 SAS Viya 服务器。您必须获得 SAS 9.4 或 SAS Viya 的许可才能运行 SAS 代码。

  1. 打开 SAS 程序文件。

  2. 单击 VS Code 窗口左下方状态栏中的“无配置文件”。

    您还可以打开命令面板(F1,或Ctrl+Shift+P在 Windows 或 Linux 上,或Shift+CMD+P在 OSX 上)并找到SAS: Add New Connection Profile命令。

  3. 按照“添加新连接配置文件”部分中的说明添加配置文件。

  4. 创建配置文件后,状态栏项将从“无配置文件”更改为新配置文件的名称。

更多设置可以查看[SAS Extension for Visual Studio Code Documentation](https://sassoftware.github.io/vscode-sas-extension/Configurations/Profiles/sas9local)

5 编译 SAS 文件

SAS 文件右上角有一个 奔跑的小人 ,点击即可开始运行所选中的程序段落,并在右侧窗口输出结果。

6 在 Jupyter Notebook 中使用 SAS

6.1 环境准备

安装 Anaconda 集成环境或 Python 和 SAS 软件,其中Anaconda要求Python3+;Python在Jupyter Notebook和SAS之间起一个桥梁的作用,Jupyter Notebook中的SAS代码会交给Python,Python负责将代码传递给SAS执行;然后将执行的结果返回给Jupyter Notebook显示。

SAS版本要求9.4,也可以是 SAS Viya。

6.2 安装SAS_KERNEL

启动 cmd,输入命令:

pip install sas_kernel

然后就会自动安装 sas_kernel 及其相应的依赖项。

安装完成后可以输入命令:

jupyter kernelspec list

来检测 sas_kernel 是否安装成功,如果成功,理论上会看到如下形式的输出:

Available kernels:
    python3    /home/sas/anaconda3/lib/python3.5/site-packages/ipykernel/resources
    sas        /home/sas/.local/share/jupyter/kernels/sas

6.3 修改 Python 配置文件

安装好 sas_kernel 后找到 Anaconda 或 Python 的安装目录,会有一个相应的文件夹出现,例如我的文件路径如下:

C:\Users\asus\AppData\Local\Programs\Python\Python312\Lib\site-packages\saspy

在这个文件路径下找到 sascfg.py 文件,该文件中需要配置连接SAS的信息。可以配置连接本地机器的SAS;也可以配置连接远程机器的SAS Server,无论是Linux Server还是Windows Server都可以。此处就以连接本地SAS为例进行说明。

  1. 打开该文件,首先是一大段注释;
  2. 在这段注释后定义的第一个变量 SAS_config_names 用于指定连接SAS的配置方式,提供了 10 种方式:default, ssh, iomlinux, iomwin, winlocal, winiomlinux, winiomwin, httpsviya, httpviya, iomcom。默认为 default 方式。
  3. 因为我们需要连接Windows机器本地的SAS,所以需要将 SAS_config_names 的值修改为 winlocal

后续有一些安装步骤,但是大多是在2016-2020年更新的教程,无法找到复现的路径,可能相关的配置已被优化。

包括这个 [SAS岩论 | 在Jupyter Notebook中使用SAS ](https://www.sohu.com/a/218339423_278472) 中写到的需要使用 cpW 定义 SAS 路径。

6.4 修改系统变量

将sas相关文件 sspiauth.dll 添加到系统环境变量,该文件很可能在如下目录:

C:\Program Files\SASHome\SASFoundation\9.4\core\sasext

(注意添加变量时不要包含 sspiauth.dll 文件本身)

Warning: 环境变量添加完成后,要重启电脑才会生效。

6.5 在 jupyter notebook 中使用 SAS

新建文件,选择使用 SAS 内核,或者在 cell 中通过 magic command 指定内核。

%%sas

使用语法如下所示:

%%sas
data iris;
    set sashelp.iris;
run;

proc print data=iris(obs=10);
run;

在Notebook中写SAS代码了,跟Python一样,同样有代码提示、语法高亮的功能。但是你会注意到过程步的结果显示了,运行的日志去哪里了?

如果代码运行错误或者没有输出(例如纯DATA步)的话,那么输出就是日志信息。

能够正确运行且有输出结果的代码就不会显示日志了。

7 安装SAS日志组件

如果想要像SAS Base一样,随时查看所有程序运行的日志结果也没问题。安装一个Notebook的SAS日志扩展组件就可以了。打开Anaconda Prompt,输入以下命令安装:

jupyter nbextension install --py sas_kernel.showSASLog

运行完毕后,输入以下命令启用SAS日志组件:

jupyter nbextension enable sas_kernel.showSASLog –py

8 连接SAS Server

如果需要配置连接远程的SAS Server,如连接远程Windows机器的SAS Server,需在sascfg.py中做以下修改:

  1. 将SAS_config_names的值改为“wintowin”;

  2. 在wintowin连接方式中将参数iomhost的值修改为远程Windows机器的IP地址;将参数encoding的值修改为euc-cn;

  3. 将cpW中5个Jar包的路径修改为远程Windows机器中SAS对应的目录。

修改完毕后,启动Notebook,首次运行SAS代码时,会提示输入访问SAS Server的有效SAS用户和密码。1

8.1 典型生态项目

SASPy

SASPy 是一个 Python 库,允许你通过 Python 代码与 SAS 进行交互。SAS Kernel 依赖于 SASPy,因此在使用 SAS Kernel 之前,你需要配置 SASPy。

JupyterLab 扩展

SAS Kernel 支持 JupyterLab 扩展,这些扩展可以提高你在 JupyterLab 中的编程效率。你可以通过以下命令安装这些扩展:

pip install sas_kernel[jlab_ext]

NBGrader

NBGrader 是一个用于分配和评分 Jupyter Notebook 的系统,它与 SAS Kernel 兼容。你可以使用 NBGrader 来创建和评分包含 SAS 代码的作业。

通过这些生态项目,SAS Kernel 不仅扩展了 Jupyter Notebook 的功能,还增强了其在数据科学和分析领域的应用能力。2