40 data points is not a lot to go with, so you should use some sort of regularization. I would recommend running a lasso regression of your target on the predictors. Once you have that, you can forecast your predictors and feed them into the lasso model to get forecasts for your target.
To forecast the predictors, I recommend using something simple, in R I would recommend forecast::ets() for automatic state space exponential smoothing, but I believe this is not available in Python. An auto_arima fit may work (be sure to tell Python your data are monthly, so auto_arima can pick up on any seasonality).
You might be able to improve on the forecasts by fitting another time series model on the residuals from the lasso fit, forecasting this out and adding it to the lasso forecast. Again, use auto_arima on the residuals, and be sure to define your data as monthly.
If your predictors might also influence each other, a vector autoregression might be called for. Or perhaps a model on lagged values of the predictors. Your knowledge of the underlying process should guide you here.
Whatever you do, benchmark your forecasts of the target against some extremely simple alternatives, e.g., the overall historical mean of the target, or a simple auto_arima model applied to the target alone, without any predictors. Such benchmarks may already be extremely hard to beat; in time series forecasting simple models often outperform more complex ones.