Jupyter + Stata 配置方法

VS Code 或 JupyterLab Desktop

对文科生友好
操作经验
Jupyter
Stata
作者

刘景山

发布于

2024 年 4 月 28 日

摘要
对 64 位版 Windows 10 适用,时效截至 2024 年|手机浏览不显示目录,建议用更大的屏幕看

1 前言

Win 指的是键盘上的 Windows 徽标键,左下角 Ctrl 和 Alt 之间,四个方片。

本经验不包含安装 Stata

请检查确认你已经成功安装 Stata。

跳跃提示

如果你已经安装了主流 Python 环境管理器(例如 Anaconda / Miniconda / Mambaforge / Miniforge / Micromamba),请跳过 小节 2.1 ,直接从 小节 2.2 开始。
如果你已经安装了 Jupyter 软件包,请跳过 小节 2.2 ,直接从 小节 2.3 开始。
以下章节可能多次涉及到类似这样的「跳过」,不再说明,请视自身情况灵活跳跃。

请检查自身操作系统

再次强调,本经验对 64 位版 Windows 10 适用。
Windows 其他版本的用户可遵照操作,遇见问题再另外解决。
其他操作系统的用户可参照操作,并参考 小节 5 列出的网址。

2 配 Jupyter 环境

2.1 配 Python 环境

Anaconda 是商业软件,虽然还没有对个人收费,但已经宣布对企业收费。
Miniconda 也是 Anaconda 的产品,虽然现在不对任何人收费,但以后的事没人知道。
虽然 Anaconda 对新手友好,但为了规避将来的法律风险——同时也为了你可怜的 C 盘剩余空间考虑——我还是强烈建议你选择 Miniforge。

2.1.1 EXE 下载安装

以下两个地址都可以下载到最新正式版 exe 格式文件,下载后点开安装就可以。原文
conda-forge 官网下载地址
GitHub 仓库下载地址

全英文路径和 Windows Username 有关

如果你的 Windows 用户名含有英文 26 个拉丁字母以外的字符,这会导致安装路径不是纯英文的,从而安装失败。这在可预见的将来都没有解决方法,你只能换个 Windows 用户名了。 详见 此 Issue

2.1.2 环境变量

也许你刚才在安装 exe 时出于安全考虑而没有勾选自动添加环境变量。
Miniforge Prompt 本身并不需要设定环境变量。现在可以跳到 小节 2.1.3

如果你希望使用 cmd 或者 Powershell 之类,那么按以下操作:

  1. 打开 Windows 高级系统设置
  2. 点击「高级」选项卡
  3. 点开「环境变量」
  4. 单击「系统变量」当中的「Path」\Rightarrow 单击「编辑」进入「编辑环境变量」窗口
  5. 单击「新建」来创建路径,通常安装 miniforge 的文件夹默认在 C 盘,是 C:\\miniforge3,那么你要新建的三个路径就是
C:\miniforge3  
C:\miniforge3\Scripts  
C:\miniforge3\Library\bin

2.1.3 配虚拟环境

用自己原有的环境也可以

并不一定必须要按照下面操作创建新环境单独给 stata 用。
用你自己已经熟悉习惯了的虚拟环境也可以,只要不是 base 环境就行。

打开 Miniforge Prompt,输入以下代码按 Enter,就创建了你需要的环境。xxx 是你给它起的名字,yyy 是给它安排的 python 版本号。-n-name 的缩写,代表用后面跟着的单词命名。

mamba create -n xxx python=yyy

例如,假设我要创建一个名为jupyter_stata的环境,python 版本号为3.11.9

mamba create -n jupyter_stata python=3.11.9

接着激活这个环境:

mamba activate jupyter_stata

如果无效,可考虑用 conda 代替操作:(conda 和 mamba 互换通常是可行的,但是使用 conda 默认通道下载某个软件包代表为此后使用行为承担商业法律责任,除非指定使用 conda-forge 通道)

conda activate jupyter_stata

如果要退出环境,由于此时是第一次激活环境,以下两句命令有可能出现某一种失效,如果无效则可以考虑两种都试试。第二次激活及以后就不会再失效。

mamba deactivate
mamba deactivate jupyter_stata

2.2 安装 Jupyter 软件包

激活刚才你创建的环境,接下来的所有环节,除 Powershell 外,都在这个环境中完成。

2.2.1 安装 Jupyter

JupyterLab 是 Jupyter Notebook 的新一代升级版,Jupyter Notebook 未来计划将放弃更新维护。所以你可以不再安装 Notebook,直接安装 Lab:

mamba install jupyterlab

2.2.2 检查

jupyter lab

如果此时在浏览器打开了 Lab 应用,说明安装成功且运行正常。

2.3 配 Jupyter 内核

2.3.1 安装内核

下载安装 nbstata 软件包:

pip install nbstata

用 nbstata 软件包向 jupyer 中安装 nbstata 内核:

python -m nbstata.install

如果以后要更新,直接 upgrade:

pip install nbstata --upgrade

而且需要再重新 python -m nbstata.install

2.3.2 设置内核

接下来,你需要手动修改一张配置文件。
在你 C 盘的用户名文件夹底下找到 .config\nbstata\nbstata.conf 文件。
假设你的 Windows 用户名叫做 xiaoming,那么这个路径就是 C:\Users\xiaoming\.config\nbstata\找到后打开,
(随便用什么软件打开,简朴到 Windows 自带的记事本可以,花哨到 Neovim 也可以)
根据你自己的情况修改这些值:(这张表别用手机看

变量名 解释 怎么填 备注
stata_dir 你的 Stata
安装的文件夹在哪
从Windows资源管理器地址栏复制就可以
edition Stata 有三套版本
你装的是哪一版
besemp 三选一
splash 要不要在 Jupyter 的输出当中也显示启动报告 TrueFalse Stata 在启动时通常在输出窗口报告软件当前版本、功能状态、购买凭证等
graph_format Stata 输出图表时
存为什么格式
四选一 \Downarrow
pngpdfsvgpystata
pystata 的意思是和 pystata 的设置保持一致
虽然你现在可能不知道什么是 pystata
(我也不知道)
但以后可能用得上
graph_width

graph_height
生成图表的横向尺寸

生成图表的纵向尺寸
如果不写单位,就默认是 in(inches 英寸)
单位还可以写
cm(厘米)
px(逻辑像素)
只要你填了有(填的有)数字,Stata 代码的 xsizeysize 数值就被覆盖,不起作用
如果不想覆盖它们,就填 default
echo 想必你知道
用 Jupyter 跑 Python 没有回声
那 Jupyter 里的 Stata 怎么办
三选一 \Downarrow
True 一切命令都有回声
False cell 仅一行命令时不回声;其他 cell 有回声
None 完全没有回声
想必你已经知道 Stata 有个对用户很友好的默认设定,就是会在输出窗口先显示你给的输入,再显示给你的输出
这个功能被叫作「回声」
missing 缺失值用什么表示 字符串本身即可
如果要和 Pandas 保持一致,就填 pandas
原则上不建议修改,默认的. 就是 Stata 唯一接受的形式

以我自己的为例,最终效果大概会像这样:

[nbstata]
stata_dir = D:/Program Files/Stata18
edition = mp
splash = False
graph_format = png
graph_width = 5.5in
graph_height = 4in
echo = False
missing = .

——莫忘了 Ctrl + S 保存。

3 JupyterLab 方案

警告!

请注意,以下论述是 2024 年 4 月写的。
到 2024 年 12 月中旬,由于 DeepSeek-V3 开源发布,
VS Code 的 LLM 辅助编程生态已经甩开 JupyterLab 很长距离,
JupyterLab 的优势仅剩下因为设置简单而容易复现。

虽然在 VS Code 丰富的社区扩展生态和灵活的语法高亮前,原生 Jupyter 已经没有多少吸引力(而且 Jupyter 受财力限制,目前没有,未来也不太可能学微软砸钱给 GitHub Copilot 教育优惠的免费 LLM 辅助),但考虑到读者朋友多来自社科专业,大概率是 Jupyter 原住民,而且 VS Code 由于可自定义的设置太多,常常难以复现,所以还是介绍一下原生 Jupyter 的配置。

虽然 JupyterLab Desktop 因为基于 Electron 开发而受到广大程序员朋友嘲笑,但我仍然推荐。它安装、卸载、浏览、检修扩展都是直接在应用内部点鼠标就可以的,不需要键盘敲命令行。它不在浏览器里显示,可以轻松区分 Ctrl + Tab 和 Alt + Tab 的作用,与浏览器实现分类正确的两种切换。

如果你赞赏以上叙述,决定不嘲笑我,请从 小节 3.2 继续。

重申

请注意 小节 3 开端的警告!如无要万无一失保证可复现的强烈需求,建议跳至 小节 4

3.1 JupyterLab Web

你刚才已经在 小节 2.2.2 打开了,启动页面会有「nbstata」的内核按钮,与 python 内核一起出现,并列显示。这就可以直接用——从最简洁的实现方法来说,本经验到这里已经可以结束了。如果还需要将英文界面切换成中文,可参考 小节 3.2.3.1 的方法。

3.2 JupyterLab Desktop

3.2.1 配 Node.js 环境

JupyterLab Desktop 因为基于 Electron 开发,需要靠 Node JS 实现某些后台功能。
直接安装难以切换版本,所以建议如下用 NVM 作管理器安装 Node JS。

3.2.1.1 安装 NVM

nvm 本身是个 Unix 应用,只能在 Linux 等类 Unix 操作系统(例如 Android iOS macOS)运行,Windows 享受不到。
好在 Corey Butler 开发了 NVM for Windows 作为使用上的代替。

卸载干净

我假定你没有在自己电脑上安装过 Node.js 或 npm。
如果有,卸载后可以在 cmd 或 Powershell 用 where node 帮助删除残余文件夹,
同时要删除有关的环境变量。

这个地址 找到「Latest」版本底下的「Assets」,下载 exe 文件。

安装过程中,设路径时

Node.js Symlink 的文件夹路径要设为尚存在的文件夹。

装完以后按 Win + R,输入 powershell 按 Ctrl + Shift + Enter,弹出以管理员身份运行的 Window Powershell 窗口。
输入 nvm -v,如果返回了当前 nvm 的版本号,就说明安装成功了。
不要关闭这个窗口。

3.2.1.2 在 NVM 中装配 Node.js

查看可安装的 Node JS 版本:

nvm list available

此时会返回与以下类似的输出。

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    23.1.0    |   22.11.0    |   0.12.18    |   0.11.16    |
|    23.0.0    |   20.18.0    |   0.12.17    |   0.11.15    |
|   22.10.0    |   20.17.0    |   0.12.16    |   0.11.14    |
|    22.9.0    |   20.16.0    |   0.12.15    |   0.11.13    |
|    22.8.0    |   20.15.1    |   0.12.14    |   0.11.12    |
|    22.7.0    |   20.15.0    |   0.12.13    |   0.11.11    |
|    22.6.0    |   20.14.0    |   0.12.12    |   0.11.10    |
|    22.5.1    |   20.13.1    |   0.12.11    |    0.11.9    |
|    22.5.0    |   20.13.0    |   0.12.10    |    0.11.8    |
|    22.4.1    |   20.12.2    |    0.12.9    |    0.11.7    |
|    22.4.0    |   20.12.1    |    0.12.8    |    0.11.6    |
|    22.3.0    |   20.12.0    |    0.12.7    |    0.11.5    |
|    22.2.0    |   20.11.1    |    0.12.6    |    0.11.4    |
|    22.1.0    |   20.11.0    |    0.12.5    |    0.11.3    |
|    22.0.0    |   20.10.0    |    0.12.4    |    0.11.2    |
|    21.7.3    |    20.9.0    |    0.12.3    |    0.11.1    |
|    21.7.2    |   18.20.4    |    0.12.2    |    0.11.0    |
|    21.7.1    |   18.20.3    |    0.12.1    |    0.9.12    |
|    21.7.0    |   18.20.2    |    0.12.0    |    0.9.11    |
|    21.6.2    |   18.20.1    |   0.10.48    |    0.9.10    |

This is a partial list. For a complete list, visit https://nodejs.org/en/download/releases

其中 LTS 代表 Long-term Support,表示这些版本是可以长期稳定运行的。显然你应该从这一列选。我暂时见过的用到 Node.js 的应用对版本的要求要么是 >=18.0.0,要么就是<=18.0.0, >=20.0.0,所以选择 20 以上的比较靠谱。

假如你选择了 22.11.0

nvm install 22.11.0


在不同版本之间切换:

nvm use 20.12.2

换回来:

nvm use 22.11.0


如果 nvm use 出现乱码或有其他故障

请检查「以管理员身份运行」这一步,它非常重要。

NVM 已经帮你配好了环境变量,所以不需要再手动操作其他内容,这样装好了就行。

3.2.2 安装 JupyterLab Desktop

GitHub Releases 下载最新版的 exe 格式文件点开安装。

3.2.3 设置 JupyterLab Desktop

窗口标题栏会显示当前使用的 conda 环境,点击可以切换;
标题栏 Menu 的 Settings 当中也可以换环境。

3.2.3.1 切换成中文显示

网页内容可以切换成中文,但 JupyterLab Desktop 这个 App 本身的不可以。
退出 App;
打开 Miniforge Prompt,激活刚才你使用的环境;
用以下命令安装中文语言包

pip install jupyterlab-language-pack-zh-CN

再打开 App,在网页的 Settings-Language 选中 Chinese (Simplified, China) - 中文 (简体, 中国)

4 VS Code 方案(推荐)

4.1 装配 VS Code 本身

4.1.1 下载安装 VS Code

点击 下载链接 直接下载适用于 64 位 Windows 10 的 exe 文件,点开安装。

4.1.2 切换成中文

启动后,按 Ctrl + Shift + X,在左侧上方弹出的扩展搜索框中搜索「中文」,在搜索结果中找到「Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code」安装。
接下来你可以自由探索 VS Code 的功能了。

4.2 连接 VS Code 和外界

4.2.1 装 Stata 插件

仍然在扩展搜索框,搜索「stata」,
安装「Stata Enhanced」「stataRun」。
前者的作用是改善开发体验,后者的作用是和 Stata 软件在后台连接。

4.2.2 装 Jupyter 插件

仍然在扩展搜索框,搜索「jupyter」,
安装「Jupyter」(作者是 Microsoft),这会给你把一整套 Jupyter 套装全部安好。

4.2.3 试验

按 Ctrl + Alt + Win + N,点击「Jupyter Notebook」新建 ipynb 格式文件。
点击右上角「选择内核」,选「Jupyter Kernel…」,选「Stata (nbstata)」,
在单元格内输入

sysuse auto
su

得到如下输出。

. sysuse auto
(1978 automobile data)

. su

    Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
        make |          0
       price |         74    6165.257    2949.496       3291      15906
         mpg |         74     21.2973    5.785503         12         41
       rep78 |         69    3.405797    .9899323          1          5
    headroom |         74    2.993243    .8459948        1.5          5
-------------+---------------------------------------------------------
       trunk |         74    13.75676    4.277404          5         23
      weight |         74    3019.459    777.1936       1760       4840
      length |         74    187.9324    22.26634        142        233
        turn |         74    39.64865    4.399354         31         51
displacement |         74    197.2973    91.83722         79        425
-------------+---------------------------------------------------------
  gear_ratio |         74    3.014865    .4562871       2.19       3.89
     foreign |         74    .2972973    .4601885          0          1

. 

可以用啦。

5 附录

nbstata 用户指南

JupyerLab Desktop 用户指南

Install nvm-windows, node.js, and npm