[How] can I prevent this notification from constantly appearing?
If you long-press that notification you would be given the option to turn off the notifications for that app. Since it is Android Oreo, you may even get the option just to turn off that particular category of notification from Weather app. In Android 9, 10 and 11, you can also change a notification's priority status to "Other" and enable "Minimize" so that they at least become less infuriating and smaller in size, if cannot be hid completely.
If that doesn't work out for you, than I suggest you try MacroDroid. You can detect that notification and clear it automatically and immediately.
Setup MacroDroid and setup permission for "Notification access" and "Modify system settings" in it. Setup a macro with the following details:
Trigger: Device Events → Notification → Notification Received → Select your application:
- Text Content: select Contains
- Text to enter for match: enter the text from your notification. In your case, it can either be "Weather is running" or "Tap for more information or to stop the app".
- uncheck Ignore ongoing notifications
- uncheck Prevent multiple triggers
Action: Notification → Clear Notifications → Select your application → fill the details mentioned above verbatim for the notification received.
The next time the notification would show up, the trigger would automatically fire up the action which would immediately clear the notification.
How can I really keep the Weather app from running in the background?
You can delete the app for your user account (the default user). Know that the only way to reinstall that app again as a system app is to factory reset. Note that removing a system app can cause boot issues, so proceed with caution and backups taken beforehand. However, I suggest you try disabling it first.
Disable the app from your Settings app. This should be enough to prevent the app from executing anything. If you can't disable it or it is not having the desired effect, setup adb and execute:
adb shell pm disable-user PACKAGE_NAME # disables the app for the current user
adb shell pm enable PACKAGE_NAME # enables the app for the user, if you must need it again, regardless of how the app was disabled.
This is akin to what you'd have done using Settings app. However, if you're still adamant on uninstalling that app, run:
adb shell pm uninstall --user 0 PACKAGE_NAME
Replace PACAKAGE_NAME with the package name of the troublesome app. To get help in finding it, see my answer here.