#15. 在沙箱中引入 Python 包
在沙箱中引入 Python 包
当前没有测试数据。
此处仅将相关材料放置于教程中,具体方法仍需自行摸索。如果你渴望伸手,那我只能说:世上没有免费的午餐.jpg
2022/11/18后的新安装版本已内置,无需本教程
由于 Hydro 采用 Nix 处理相关数据,独立安装 Python 包无法使 Python 找到包位置,因此需要设置相关环境即可使 Python 找到包的位置。
确认 Python 版本
如果你装的是 Python 3 Minimal,那你可能需要安装一个 Python 3。
用 nix-env -q
查询已安装环境,有 python3-minimal
就 nix-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
的,可能你不适合配置这玩意。
理论上,你现在就可以用第二步装上的包了。
备注
- 沙盒只能找到 Nix 装的依赖
- 环境变量添加后仍然找不到解决方案:
使用 nix-shell -p {packages} --run "python"
进入 python 环境,如需要 numpy
和 pandas
, 就输入:nix-shell -p python3Packages.numpy python3Packages.pandas --run "python"
。
在运行的 python 中输入: import os;os.environ["PYTHONPATH"]
得到的结果去掉双引号复制并在控制面板里的 env
的 PYTHONPATH
最后加上:{PYTHONPATH}
,其中 {PYTHONPATH}
是你刚才拿到的东西,如:
PYTHONPATH=/lib/python3.10/site-packages:{PYTHONPATH}