diff --git a/dist/spinup-0.2.0-py3-none-any.whl b/dist/spinup-0.2.0-py3-none-any.whl new file mode 100644 index 000000000..8da77cb63 Binary files /dev/null and b/dist/spinup-0.2.0-py3-none-any.whl differ diff --git a/dist/spinup-0.2.0-py3.12.egg b/dist/spinup-0.2.0-py3.12.egg new file mode 100644 index 000000000..f64dead9e Binary files /dev/null and b/dist/spinup-0.2.0-py3.12.egg differ diff --git a/docs/user/installation.rst b/docs/user/installation.rst index 1307919ce..4ee703007 100644 --- a/docs/user/installation.rst +++ b/docs/user/installation.rst @@ -83,7 +83,11 @@ Installing Spinning Up cd spinningup pip install -e . -.. admonition:: You Should Know +.. admonition:: + *Note* I had to use `pip wheel --no-deps -w dist .` to move past this step. A reference was deprecated and I believe the omittion of + re-downloading of dependencies helped. I will need to look into this more, getting it up and running was the priority. + + You Should Know Spinning Up defaults to installing everything in Gym **except** the MuJoCo environments. In case you run into any trouble with the Gym installation, check out the `Gym`_ github page for help. If you want the MuJoCo environments, see the optional installation section below. diff --git a/setup.py b/setup.py index 16116a784..31ff24307 100644 --- a/setup.py +++ b/setup.py @@ -18,16 +18,16 @@ 'gym[atari,box2d,classic_control]~=0.15.3', 'ipython', 'joblib', - 'matplotlib==3.1.1', + 'matplotlib==3.10.0', 'mpi4py', 'numpy', 'pandas', 'pytest', 'psutil', 'scipy', - 'seaborn==0.8.1', - 'tensorflow>=1.8.0,<2.0', - 'torch==1.3.1', + 'seaborn==0.13.2', + 'tensorflow==2.18.0', + 'torch==2.6.0', 'tqdm' ], description="Teaching tools for introducing people to deep RL.", diff --git a/spinup/algos/pytorch/ddpg/ddpg.py b/spinup/algos/pytorch/ddpg/ddpg.py index 1416a2123..a18673431 100644 --- a/spinup/algos/pytorch/ddpg/ddpg.py +++ b/spinup/algos/pytorch/ddpg/ddpg.py @@ -2,7 +2,7 @@ import numpy as np import torch from torch.optim import Adam -import gym +import gymnasium import time import spinup.algos.pytorch.ddpg.core as core from spinup.utils.logx import EpochLogger diff --git a/spinup/algos/pytorch/ppo/core.py b/spinup/algos/pytorch/ppo/core.py index 84e9f9889..1710eb36a 100644 --- a/spinup/algos/pytorch/ppo/core.py +++ b/spinup/algos/pytorch/ppo/core.py @@ -1,6 +1,6 @@ import numpy as np import scipy.signal -from gym.spaces import Box, Discrete +from gymnasium.spaces import Box, Discrete import torch import torch.nn as nn diff --git a/spinup/algos/pytorch/ppo/ppo.py b/spinup/algos/pytorch/ppo/ppo.py index a77ed9daf..c67069009 100644 --- a/spinup/algos/pytorch/ppo/ppo.py +++ b/spinup/algos/pytorch/ppo/ppo.py @@ -1,7 +1,7 @@ import numpy as np import torch from torch.optim import Adam -import gym +import gymnasium import time import spinup.algos.pytorch.ppo.core as core from spinup.utils.logx import EpochLogger diff --git a/spinup/algos/pytorch/sac/sac.py b/spinup/algos/pytorch/sac/sac.py index e463d39f2..693446734 100644 --- a/spinup/algos/pytorch/sac/sac.py +++ b/spinup/algos/pytorch/sac/sac.py @@ -3,7 +3,7 @@ import numpy as np import torch from torch.optim import Adam -import gym +import gymnasium import time import spinup.algos.pytorch.sac.core as core from spinup.utils.logx import EpochLogger diff --git a/spinup/algos/pytorch/td3/td3.py b/spinup/algos/pytorch/td3/td3.py index 2d59875c2..cb314a822 100644 --- a/spinup/algos/pytorch/td3/td3.py +++ b/spinup/algos/pytorch/td3/td3.py @@ -3,7 +3,7 @@ import numpy as np import torch from torch.optim import Adam -import gym +import gymnasium import time import spinup.algos.pytorch.td3.core as core from spinup.utils.logx import EpochLogger diff --git a/spinup/algos/pytorch/vpg/core.py b/spinup/algos/pytorch/vpg/core.py index 84e9f9889..1710eb36a 100644 --- a/spinup/algos/pytorch/vpg/core.py +++ b/spinup/algos/pytorch/vpg/core.py @@ -1,6 +1,6 @@ import numpy as np import scipy.signal -from gym.spaces import Box, Discrete +from gymnasium.spaces import Box, Discrete import torch import torch.nn as nn diff --git a/spinup/algos/pytorch/vpg/vpg.py b/spinup/algos/pytorch/vpg/vpg.py index 4639b56ae..2c3c54c95 100644 --- a/spinup/algos/pytorch/vpg/vpg.py +++ b/spinup/algos/pytorch/vpg/vpg.py @@ -1,7 +1,7 @@ import numpy as np import torch from torch.optim import Adam -import gym +import gymnasium import time import spinup.algos.pytorch.vpg.core as core from spinup.utils.logx import EpochLogger diff --git a/spinup/algos/tf1/ddpg/ddpg.py b/spinup/algos/tf1/ddpg/ddpg.py index 90dabaa2d..28585fbe0 100644 --- a/spinup/algos/tf1/ddpg/ddpg.py +++ b/spinup/algos/tf1/ddpg/ddpg.py @@ -1,6 +1,6 @@ import numpy as np import tensorflow as tf -import gym +import gymnasium import time from spinup.algos.tf1.ddpg import core from spinup.algos.tf1.ddpg.core import get_vars diff --git a/spinup/algos/tf1/ppo/core.py b/spinup/algos/tf1/ppo/core.py index 4cb360f46..e862a7916 100644 --- a/spinup/algos/tf1/ppo/core.py +++ b/spinup/algos/tf1/ppo/core.py @@ -1,7 +1,7 @@ import numpy as np import tensorflow as tf import scipy.signal -from gym.spaces import Box, Discrete +from gymnasium.spaces import Box, Discrete EPS = 1e-8 diff --git a/spinup/algos/tf1/ppo/ppo.py b/spinup/algos/tf1/ppo/ppo.py index 70ec8859b..94dca2507 100644 --- a/spinup/algos/tf1/ppo/ppo.py +++ b/spinup/algos/tf1/ppo/ppo.py @@ -1,6 +1,6 @@ import numpy as np import tensorflow as tf -import gym +import gymnasium as gym import time import spinup.algos.tf1.ppo.core as core from spinup.utils.logx import EpochLogger diff --git a/spinup/algos/tf1/sac/sac.py b/spinup/algos/tf1/sac/sac.py index e31a09dd2..136e72868 100644 --- a/spinup/algos/tf1/sac/sac.py +++ b/spinup/algos/tf1/sac/sac.py @@ -1,6 +1,6 @@ import numpy as np import tensorflow as tf -import gym +import gymnasium import time from spinup.algos.tf1.sac import core from spinup.algos.tf1.sac.core import get_vars diff --git a/spinup/algos/tf1/td3/td3.py b/spinup/algos/tf1/td3/td3.py index 32257e990..e969d7bec 100644 --- a/spinup/algos/tf1/td3/td3.py +++ b/spinup/algos/tf1/td3/td3.py @@ -1,6 +1,6 @@ import numpy as np import tensorflow as tf -import gym +import gymnasium import time from spinup.algos.tf1.td3 import core from spinup.algos.tf1.td3.core import get_vars diff --git a/spinup/algos/tf1/trpo/core.py b/spinup/algos/tf1/trpo/core.py index 6fc865921..2395a5153 100644 --- a/spinup/algos/tf1/trpo/core.py +++ b/spinup/algos/tf1/trpo/core.py @@ -1,7 +1,7 @@ import numpy as np import tensorflow as tf import scipy.signal -from gym.spaces import Box, Discrete +from gymnasium.spaces import Box, Discrete EPS = 1e-8 diff --git a/spinup/algos/tf1/trpo/trpo.py b/spinup/algos/tf1/trpo/trpo.py index 9e09f1348..288c3cede 100644 --- a/spinup/algos/tf1/trpo/trpo.py +++ b/spinup/algos/tf1/trpo/trpo.py @@ -1,6 +1,6 @@ import numpy as np import tensorflow as tf -import gym +import gymnasium import time import spinup.algos.tf1.trpo.core as core from spinup.utils.logx import EpochLogger diff --git a/spinup/algos/tf1/vpg/core.py b/spinup/algos/tf1/vpg/core.py index 4cb360f46..e862a7916 100644 --- a/spinup/algos/tf1/vpg/core.py +++ b/spinup/algos/tf1/vpg/core.py @@ -1,7 +1,7 @@ import numpy as np import tensorflow as tf import scipy.signal -from gym.spaces import Box, Discrete +from gymnasium.spaces import Box, Discrete EPS = 1e-8 diff --git a/spinup/algos/tf1/vpg/vpg.py b/spinup/algos/tf1/vpg/vpg.py index 5d4ecd183..840225197 100644 --- a/spinup/algos/tf1/vpg/vpg.py +++ b/spinup/algos/tf1/vpg/vpg.py @@ -1,6 +1,6 @@ import numpy as np import tensorflow as tf -import gym +import gymnasium import time import spinup.algos.tf1.vpg.core as core from spinup.utils.logx import EpochLogger diff --git a/spinup/run.py b/spinup/run.py index 9b8526e88..6b88c7869 100644 --- a/spinup/run.py +++ b/spinup/run.py @@ -3,7 +3,7 @@ from spinup.utils.run_utils import ExperimentGrid from spinup.utils.serialization_utils import convert_json import argparse -import gym +import gymnasium as gym import json import os, subprocess, sys import os.path as osp @@ -153,7 +153,7 @@ def process(arg): # Special handling for environment: make sure that env_name is a real, # registered gym environment. - valid_envs = [e.id for e in list(gym.envs.registry.all())] + valid_envs = [id for e in list(gym.envs.registry.keys())] assert 'env_name' in arg_dict, \ friendly_err("You did not give a value for --env_name! Add one and try again.") for env_name in arg_dict['env_name']: @@ -245,4 +245,4 @@ def process(arg): # Assume that the user plans to execute an algorithm. Run custom # parsing on the arguments and build a grid search to execute. args = sys.argv[2:] - parse_and_execute_grid_search(cmd, args) + parse_and_execute_grid_search(cmd, args) \ No newline at end of file diff --git a/spinup/utils/mpi_tf.py b/spinup/utils/mpi_tf.py index 96cbcf5e0..73da85387 100644 --- a/spinup/utils/mpi_tf.py +++ b/spinup/utils/mpi_tf.py @@ -26,7 +26,7 @@ def sync_all_params(): return sync_params(tf.global_variables()) -class MpiAdamOptimizer(tf.train.AdamOptimizer): +class MpiAdamOptimizer(tf.compat.v1.train.AdamOptimizer): """ Adam optimizer that averages gradients across MPI processes.