Running scripts from the crontab¶
The following script will fail when is run from the crontab:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
map = Basemap()
map.drawcoastlines()
plt.savefig('out.png')
The error will be something like
RuntimeError: could not open displayX
This is because matplotlib.pyplot assumes that a, active X server is opened to be able to open the window with the graph when plt.show() is called.
To avoid the problem, simply add importing pyplot:
import matplotlib as mpl
mpl.use('Agg')
So the code will work even from the cron when written as:
from mpl_toolkits.basemap import Basemap
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
map = Basemap()
map.drawcoastlines()
plt.savefig('out.png')
There is a post at StackOverflow explaining it better