我在使用 Slurm 版本 20.11.7 时遇到了类似的问题
我有一个使用系统 python3 创建的虚拟环境,它是 Python 3.6.8
在调用已安装模块的日志节点上激活 venv 时工作正常,但在以下 shell 中例如它没有脚本并导致ModuleNotFound:
#!/bin/bash
#SBATCH --partition=gpu #use GPU partition
#SBATCH --nodes=1 #number of nodes
#SBATCH --gres=gpu:2 #number of GPUs per node
#SBATCH --job-name=joeynmt_test
#SBATCH --mail-user=email
#SBATCH --mail-type=all
#SBATCH --ntasks=1
#SBATCH --mem=24G
#SBATCH --time=08:00:00
#SBATCH --qos=standard
source /home/.../bin/activate #activate venv
python3 --version
which python3
python3 -m myModule
在激活 venv 后直接调用 python3 --version 会导致系统 python 及其位置从 venv 插入 python
对我有用的是加载更新的 Python 版本(模块添加 Python/3.8.6-GCCcore-10.2.0),然后创建 venv,然后在 shell 脚本中相应地创建:
#!/bin/bash
#SBATCH --partition=gpu #use GPU partition
#SBATCH --nodes=1 #number of nodes
#SBATCH --gres=gpu:2 #number of GPUs per node
#SBATCH --job-name=joeynmt_test
#SBATCH --mail-user=email
#SBATCH --mail-type=all
#SBATCH --ntasks=1
#SBATCH --mem=24G
#SBATCH --time=08:00:00
#SBATCH --qos=standard
module add Python/3.8.6-GCCcore-10.2.0
source /home/.../bin/activate #activate venv
python3 --version
which python3
python3 -m myModule
使用 sbatch 将其提交给 Slurm 并没有引发任何错误,并且 venv 已成功“转移”到工作节点。也许对其他人有帮助。