RLBot / RLBotPack

A collection of ready-to-use bots made by the community.
MIT License
34 stars 45 forks source link

Require problematic python bots to switch to standalone #306

Closed VirxEC closed 1 year ago

VirxEC commented 1 year ago

There are bots that have conflicting dependencies, and some that even require Python 3.7 (mostly due to a requirement on RLUtilities)

The specifics bots and their devs need to be found and contacted to move their bot to a StandaloneBot that operates within a virtual environment.

ddthj commented 1 year ago

Just to confirm, those bots with custom rlutilities can still use python 3.7 in their venv right? No extra work needed?

VirxEC commented 1 year ago

By who? There will be extra work required in the sense that just because they're running in a venv doesn't mean that they will work. Them running in a venv just makes it possible for us to make the changes required for a user who has both 3.10 and 3.7 to run the bot in 3.7 while everything else runs 3.10.

tl;dr getting the bots to run in a venv is just the first step.

ddthj commented 1 year ago

No extra work from out side. Once they're using a venv we don't have to worry about breaking them when we update python

VirxEC commented 1 year ago

After the v5 release, yes. There will be fewer/no problems with updating Python in the future.

NicEastvillage commented 1 year ago

The specifics bots and their devs need to be found and contacted to move their bot to a StandaloneBot

We can do this without contacting people. It's just a bit fiddly to figure out what each bot needs. If we do it ourselves, then we just need to notify the bot maker.

Just to confirm, those bots with custom rlutilities can still use python 3.7 in their venv right? No extra work needed?

The RLUtiltities bots may break when we switch python version, but not from switching to venv. Since this applies to so few bots I think we can make it the RLUtilities users responsibility to recompile their bindings.

ddthj commented 1 year ago

I guess I'm a little confused as to how standalone bots worked. I thought they could be packaged with their own versions of python to use, or will they still use RLBot's python version but with only the dependencies they require?

JoshyDevRL commented 1 year ago

They will still use RLBot's python version

VirxEC commented 1 year ago

But this can be changed. RLBot will actually use whatever python version the venv was created with.

ddthj commented 1 year ago

Ok. Sounds like the plan is to switch to venv first and let the rlutilities bots deal with the python bump whenever that happens next. Do we know which bots are problematic, or should any bot with a requirements.txt be forced to venv?

VirxEC commented 1 year ago

RLU bots that I'm currently aware of:

Stick also has some Python 3.6/3.7 only binaries called car_path

ddthj commented 1 year ago

Since we're planning to purge some of the botpack, maybe that happens first. Then we can see which bots still have dependency conflicts and make those standalone. We'll worry about RLU during the python update

VirxEC commented 1 year ago

Removing some of those bots will break Story Mode, but yes trimming the botpack should come before this

NicEastvillage commented 1 year ago

Leaving this here for the ML bots: Version 0.21 of the gym package cannot be installed with modern setuptools (they have mispelt one of their dependencie's versions). stable_baselines3 version 1.4.0 through 1.8.0 uses this version of gym. So any bot that uses these versions of stable_baselines3 cannot be installed, unless a fixed version of gym is specified in the requirements.txt, like this:

gym @ git+https://github.com/openai/gym.git@9180d12e1b66e7e2a1a622614f787a6ec147ac40
stable_baselines3==1.8.0

More info here: https://github.com/openai/gym/issues/3202#issuecomment-1511268727

VirxEC commented 1 year ago

I don't think this is needed anymore, we updated all bots to work in Python 3.11!