px普贤教程PuXian
普贤教程 › 基础教程

环境搭建

工具链是一个静态分发的目录,不需要 root,也不需要编译环境——除非你要在自己的机器上做交叉编译。

确认是否已安装

sh
px --version
text
px 0.2.382

能打印出这个版本号就说明工具链可用。命令 pxc 是 px 的兼容别名,二者完全等价。

安装方式一:发布包(推荐给开发机)

sh
tar xzf puxian-0.2.382-<tag>.tar.gz
cd puxian-0.2.382-<tag>
./tools/px --version
./tools/px run hello.px

解压即可用。目录结构如下:

路径内容
tools/px工具链入口(build / run / lint / fmt / test / doc)
tools/pxpkg包管理器,读取 registry
bootstrap/编译器、解释器、词法/语法分析器
runtime/编译所需的 C 运行时与第三方静态库
stdlib/27 个标准库模块
registry/195 个生态包
在解压目录外调用 px标准库是按「当前目录 → 上级目录」查找的。如果你把 px 软链到 /usr/local/bin,在别处写代码时先设环境变量:
export PX_STDLIB=/opt/puxian/stdlib

安装方式二:RPM(Rocky / CentOS / openEuler)

仓库根地址 https://soft.xiusoft.cn/puxian/rpm/,提供 el7、el9 与 openEuler 22.03 / 24.03 四个构建。

第一步:写仓库配置

sh
cat > /etc/yum.repos.d/puxian.repo <<'EOF'
[puxian]
name=PuXian E2E (镜像仓库)
baseurl=https://soft.xiusoft.cn/puxian/rpm/$releasever/$basearch/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://soft.xiusoft.cn/puxian/rpm/PUXIAN-GPG-KEY.asc
EOF
heredoc 的引号不能省必须写 <<'EOF',不能写 <<EOF。后者 shell 会把 $releasever 与 $basearch 当变量展开成空串,落盘变成 /rpm//x86_64/,dnf 报 404,而 cat 出来的文件看上去「没什么问题」——错误发生在写入那一刻,不在读取时。
配置项值作用
namePuXian E2E (镜像仓库)dnf repolist 里显示的名字,不参与解析
baseurl…/rpm/$releasever/$basearch/dnf 把两个变量替换成系统主版本与 CPU 架构,再拼成索引目录
enabled1参与依赖解析;0 表示配上但不启用
gpgcheck1校验每个 rpm 的签名,不过则拒装
repo_gpgcheck1校验 repodata 索引本身的签名——防的是索引被替换,与上面那条不是一回事
gpgkey…/PUXIAN-GPG-KEY.asc公钥地址,首次装包时自动导入

第二步:确认仓库可解析

sh
dnf repolist puxian
text
repo id     repo name                       status
puxian      PuXian E2E (镜像仓库)           enabled

status 为 enabled 即通。若这里报 Cannot download repomd.xml: 404,先核对 baseurl 里的版本目录是否存在(见下表)。

版本目录对照

系统$releasever默认配置命中的路径是否可用
Rocky 9 / Alma 9 / CentOS Stream 99/rpm/9/x86_64/直接可用
CentOS 77/rpm/7/x86_64/直接可用
openEuler 22.0322.03/rpm/22.03/x86_64/不存在,要改 baseurl
openEuler 24.0324.03/rpm/24.03/x86_64/不存在,要改 baseurl

openEuler 的版本目录在 openeuler/ 子目录下,不是顶层的 $releasever,所以要把 baseurl 写成绝对路径:

ini
baseurl=https://soft.xiusoft.cn/puxian/rpm/openeuler/22.03/$basearch/

第三步:安装

sh
dnf install -y puxian
px --version
text
px 0.2.382

镜像仓库当前的包与已装版本可以用一条命令对照:

sh
dnf list puxian
text
Installed Packages
puxian.x86_64    0.2.382-1.m382.el9    @puxian

升级用 dnf upgrade -y puxian。本教程正文里的实测输出记录于 0.2.382,与仓库当前版本一致;看到 0.2.37x 的旧输出说明你的机器该升级了。换版本会让编译缓存整体失效,首个请求会多等 1–2 秒,属正常。

第四步:核对公钥指纹

首次装包会提示导入公钥,指纹应当是:

text
pub   rsa4096 2026-09-05 [SC]
      3345 36AC 7B3E 161A BE1F  5375 3851 AD99 2A61 D264
uid   PuXian Release Signing (Nanzhan Group Datzhetongyou Team) <xiuqing@qq.com>
sh
curl -sS https://soft.xiusoft.cn/puxian/rpm/PUXIAN-GPG-KEY.asc | gpg --show-keys --with-fingerprint

离线机器

没有外网时,从同一镜像取 rpm 直接装,跳过仓库这一步:

sh
curl -O https://soft.xiusoft.cn/puxian/rpm/9/x86_64/puxian-0.2.382-1.m382.el9.x86_64.rpm
rpm -Uvh puxian-0.2.382-1.m382.el9.x86_64.rpm

这条路径不经过 dnf,仓库能自动带的系统依赖要自己补齐,下面这条尤其容易漏。

编译轨缺依赖Rocky 9 上 px build 需要 glibc-static,它只在 crb 仓库里:
dnf -y --enablerepo=crb install glibc-static
纯 px run(解释执行)不需要它。

写第一个文件

新建一个目录,放一个 hello.px:

px
def main():
    print("hello, puxian")
sh
px run hello.px
text
hello, puxian

不需要 package 声明、不需要 import main、不需要 func main()。一个文件就是一个可执行程序。

编辑器的选择

PuXian 提供 LSP,任何支持 LSP 的编辑器都能拿到补全与诊断:

sh
px lsp

没有特殊需求时,VS Code 装上任意 LSP 客户端、指向 px lsp 即可。也可以只用 px fmt 保持格式统一。

本章检查清单

  • px --version 输出与你的发布包一致;
  • 能 px run 一个 hello 程序;
  • 知道 stdlib 与 registry 分别在哪;
  • 知道纯解释执行不需要 gcc,编译成二进制才需要。