SLURM job. NameError: name 'python3' is not defined
SLURM job. NameError: name 'python3' is not defined
一段时间以来,我一直在想办法 运行 在 slurm 上找到一份工作。
Python 用户目录中的版本:
$ python -V
Python 2.7.5
$ python3 -V
Python 3.6.8
test.py 包括:
import pandas as pd
import numpy as np
true = pd.read_csv("testfile.csv")
print('Just Testing. End for now.')
gpu.job 传递给 SLURM:
#!/usr/bin/python3
#SBATCH --job-name=testjob # Job name
#SBATCH --output=job.%j.out # Name of output file (%j expands to jobId)
#SBATCH --cpus-per-task=4 # Schedule one core
#SBATCH --gres=gpu # Schedule a GPU
#SBATCH --time=71:59:59 # Run time (hh:mm:ss) - run for one hour max
#SBATCH --partition=red # Run on either the Red or Brown queue
#SBATCH --mail-type=END # Send an email when the job finishes
#SBATCH --export=ALL # All of the users environment will be loaded from callers environment
python3 /home/username/test/test.py
在 运行ning sbatch gpu.job
之后,我得到:
Traceback (most recent call last):
File "/var/spool/slurm/d/job402350/slurm_script", line 13, in
python3 /home/username/test/test.py
NameError: name 'python3' is not defined ~
这些变体也没有帮助并给出相同的错误:
python3 test.py
/usr/bin/python3 test.py
/usr/bin/python3 /home/username/test/test.py
如有建议,将不胜感激。
您的提交脚本是 shell 脚本,而不是 Python 脚本。所以你的提交脚本的第一行应该是
#!/usr/bin/env bash
而不是
#!/usr/bin/python3
从技术上讲,您可以提交一个 Python 脚本的作业脚本,但是 #SBATCH
指令直接进入 Python 脚本,这就是您提交的脚本:
#!/usr/bin/python3
#SBATCH --job-name=testjob # Job name
#SBATCH --output=job.%j.out # Name of output file (%j expands to jobId)
#SBATCH --cpus-per-task=4 # Schedule one core
#SBATCH --gres=gpu # Schedule a GPU
#SBATCH --time=71:59:59 # Run time (hh:mm:ss) - run for one hour max
#SBATCH --partition=red # Run on either the Red or Brown queue
#SBATCH --mail-type=END # Send an email when the job finishes
#SBATCH --export=ALL # All of the users environment will be loaded from callers environment
import pandas as pd
import numpy as np
true = pd.read_csv("testfile.csv")
print('Just Testing. End for now.')
那么您可以直接sbatch
这个Python脚本。但大多数情况下,首选使用 Bash 脚本来设置环境、更改目录、来回复制文件等,这在 Bash 中比在 Python 中更容易。
一段时间以来,我一直在想办法 运行 在 slurm 上找到一份工作。
Python 用户目录中的版本:
$ python -V
Python 2.7.5
$ python3 -V
Python 3.6.8
test.py 包括:
import pandas as pd
import numpy as np
true = pd.read_csv("testfile.csv")
print('Just Testing. End for now.')
gpu.job 传递给 SLURM:
#!/usr/bin/python3
#SBATCH --job-name=testjob # Job name
#SBATCH --output=job.%j.out # Name of output file (%j expands to jobId)
#SBATCH --cpus-per-task=4 # Schedule one core
#SBATCH --gres=gpu # Schedule a GPU
#SBATCH --time=71:59:59 # Run time (hh:mm:ss) - run for one hour max
#SBATCH --partition=red # Run on either the Red or Brown queue
#SBATCH --mail-type=END # Send an email when the job finishes
#SBATCH --export=ALL # All of the users environment will be loaded from callers environment
python3 /home/username/test/test.py
在 运行ning sbatch gpu.job
之后,我得到:
Traceback (most recent call last):
File "/var/spool/slurm/d/job402350/slurm_script", line 13, in
python3 /home/username/test/test.py
NameError: name 'python3' is not defined ~
这些变体也没有帮助并给出相同的错误:
python3 test.py
/usr/bin/python3 test.py
/usr/bin/python3 /home/username/test/test.py
如有建议,将不胜感激。
您的提交脚本是 shell 脚本,而不是 Python 脚本。所以你的提交脚本的第一行应该是
#!/usr/bin/env bash
而不是
#!/usr/bin/python3
从技术上讲,您可以提交一个 Python 脚本的作业脚本,但是 #SBATCH
指令直接进入 Python 脚本,这就是您提交的脚本:
#!/usr/bin/python3
#SBATCH --job-name=testjob # Job name
#SBATCH --output=job.%j.out # Name of output file (%j expands to jobId)
#SBATCH --cpus-per-task=4 # Schedule one core
#SBATCH --gres=gpu # Schedule a GPU
#SBATCH --time=71:59:59 # Run time (hh:mm:ss) - run for one hour max
#SBATCH --partition=red # Run on either the Red or Brown queue
#SBATCH --mail-type=END # Send an email when the job finishes
#SBATCH --export=ALL # All of the users environment will be loaded from callers environment
import pandas as pd
import numpy as np
true = pd.read_csv("testfile.csv")
print('Just Testing. End for now.')
那么您可以直接sbatch
这个Python脚本。但大多数情况下,首选使用 Bash 脚本来设置环境、更改目录、来回复制文件等,这在 Bash 中比在 Python 中更容易。