Cómo importar un módulo python local cuando se usa el comando sbatch en SLURM
Estaba usando el administrador de clústerslurm y estaba ejecutando un script de envío con sbatch (con un intérprete de python). El envío de sbatch importó uno de mis módulos llamadomain_nn.py
. El módulo se encuentra en el mismo lugar que mi directorio de envío, sin embargo, Python no lo encuentra a pesar de que el archivo existe. Me está costando entender por qué sucede esto. Mi archivo de Python tiene el siguiente aspecto:
#!/us,r/bin/env python
#SBATCH --job-name=Python
print('hi')
import main_nn
Sin embargo, la salida de mi archivo de volcado slurm es:
hi
Traceback (most recent call last):
File "/home/slurm/slurmd/job3223398/slurm_script", line6, in <module>
import main_nn
ImportError: No module named main_nn
Traté de verificar si el módulomain_nn
estaba en el directorio actual y estaba allí de hecho. Por lo tanto, lo primero que me pareció sospechoso fue que el error en el archivo slurm decía que la ubicación de mi script estaba en"/home/slurm/slurmd/job3223398/slurm_script"
en lugar de apath_to_project
. Así que seguí adelante y agregué la línea
os.system('pwd')
para ver desde dónde se estaba ejecutando mi script y, para mi sorpresa, se estaba ejecutando enpath_to_project
en lugar de a"/home/slurm/slurmd/job3223398/slurm_script"
lo que debe significar que sbatch está haciendo algo extraño para ejecutar un script en una ubicación pero hacer que piense que está en otra. Si este es el caso, ¿cómo se supone que debo hacer una importación en Python donde el módulo está en la misma ubicación que en mi script de envío? ¿Estoy obligado a ponerlo en un paquete y engañar a Python para pensar que está en un paquete / biblioteca?