#15. 在沙箱中引入 Python 包

在沙箱中引入 Python 包

当前没有测试数据。

此处仅将相关材料放置于教程中,具体方法仍需自行摸索。如果你渴望伸手,那我只能说:世上没有免费的午餐.jpg

2022/11/18后的新安装版本已内置,无需本教程

由于 Hydro 采用 Nix 处理相关数据,独立安装 Python 包无法使 Python 找到包位置,因此需要设置相关环境即可使 Python 找到包的位置。

确认 Python 版本

如果你装的是 Python 3 Minimal,那你可能需要安装一个 Python 3。

nix-env -q 查询已安装环境,有 python3-minimalnix-env -e python3-minimal 卸载,然后 nix-env -iA nixpkgs.python3 装个完整的。

挂载文件

于2022/11/10 后安装的用户可忽略此步骤

~/.hydro/mount.yaml 添加:

  - type: bind
    source: /root/.nix-profile/lib
    target: /lib
    readonly: true
  - type: bind
    source: /root/.nix-profile/share
    target: /share
    readonly: true
  - type: bind
    source: /root/.nix-profile/etc
    target: /etc
    readonly: true

安装包

以下是 Nix 的简要操作说明:

使用 nix-env -iA nixpkgs.python3Packages.xxxxx 安装新包,后重启沙箱 pm2 restart hydro-sandbox 生效。

如果想安装 cyaron ,可以先 nix-channel --update 后使用 nix-env -iA hydro.xeger hydro.cyaron 安装。

可以在 Nixos Search 中搜索你需要的包。

记得安装所需依赖

修改环境变量

此处(2022/11/10)以 Python 3.10 为例,你看到的时候我也不知道 Python 3.x 了,都来配置这东西了你不会找不到 Python 版本吧

在控制面板里的 env 最后加上:

PYTHONPATH=/lib/python3.10/site-packages

找不到 env 的,可能你不适合配置这玩意。

理论上,你现在就可以用第二步装上的包了。

备注

  1. 沙盒只能找到 Nix 装的依赖
  2. 环境变量添加后仍然找不到解决方案:

使用 nix-shell -p {packages} --run "python" 进入 python 环境,如需要 numpypandas, 就输入:nix-shell -p python3Packages.numpy python3Packages.pandas --run "python"

在运行的 python 中输入: import os;os.environ["PYTHONPATH"]

得到的结果去掉双引号复制并在控制面板里的 envPYTHONPATH 最后加上:{PYTHONPATH} ,其中 {PYTHONPATH} 是你刚才拿到的东西,如:

PYTHONPATH=/lib/python3.10/site-packages:{PYTHONPATH}