仅在 Slurm 中提交 python 作业时出错
Error only when submitting python job in Slurm
我是 运行 远程机器上的 python 脚本,它运行良好,但启动后不久我收到警告:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-myusername'
我不担心这个警告,因为它不会停止我的代码。
然后我尝试使用 Slurm 工作负载管理器提交相同的代码,使用命令:
sbatch --wrap="python mycode.py" -N 1 --cpus-per-task=8 -o mycode.o
当我这样做时,代码不起作用,并且出现以下错误:
Traceback (most recent call last):
File "mycode.py", line 99, in <module>
fig=plt.figure(figsize=(20, 12), dpi = 100, facecolor='w', edgecolor='k')
File "/home/myusername/miniconda3/lib/python3.7/site-packages/matplotlib/pyplot.py", line 539, in figure
**kwargs)
File "/home/myusername/miniconda3/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 3252, in new_figure_manager
return cls.new_figure_manager_given_figure(num, fig)
File "/home/myusername/miniconda3/lib/python3.7/site-packages/matplotlib/backends/_backend_tk.py", line 946, in new_figure_manager_given_figure
window = tk.Tk(className="matplotlib")
File "/home/myusername/miniconda3/lib/python3.7/tkinter/__init__.py", line 2023, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)_tkinter.TclError: couldn't connect to display "localhost:36.0"
很明显这个错误与我正在制作的图形有关。我不确定它是否与 XDG_RUNTIME_DIR 警告有关。
如有任何帮助,我们将不胜感激。
我认为您的问题与以下线程有关
tkinter.TclError: couldn't connect to display "localhost:18.0"
如下更改导入的解决方案
import matplotlib
matplotlib.use('pdf')
import matplotlib.pyplot as plt
几个线程
我是 运行 远程机器上的 python 脚本,它运行良好,但启动后不久我收到警告:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-myusername'
我不担心这个警告,因为它不会停止我的代码。
然后我尝试使用 Slurm 工作负载管理器提交相同的代码,使用命令:
sbatch --wrap="python mycode.py" -N 1 --cpus-per-task=8 -o mycode.o
当我这样做时,代码不起作用,并且出现以下错误:
Traceback (most recent call last):
File "mycode.py", line 99, in <module>
fig=plt.figure(figsize=(20, 12), dpi = 100, facecolor='w', edgecolor='k')
File "/home/myusername/miniconda3/lib/python3.7/site-packages/matplotlib/pyplot.py", line 539, in figure
**kwargs)
File "/home/myusername/miniconda3/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 3252, in new_figure_manager
return cls.new_figure_manager_given_figure(num, fig)
File "/home/myusername/miniconda3/lib/python3.7/site-packages/matplotlib/backends/_backend_tk.py", line 946, in new_figure_manager_given_figure
window = tk.Tk(className="matplotlib")
File "/home/myusername/miniconda3/lib/python3.7/tkinter/__init__.py", line 2023, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)_tkinter.TclError: couldn't connect to display "localhost:36.0"
很明显这个错误与我正在制作的图形有关。我不确定它是否与 XDG_RUNTIME_DIR 警告有关。
如有任何帮助,我们将不胜感激。
我认为您的问题与以下线程有关
tkinter.TclError: couldn't connect to display "localhost:18.0"
如下更改导入的解决方案
import matplotlib
matplotlib.use('pdf')
import matplotlib.pyplot as plt
几个线程