1import os.path 2import sys 3import itertools 4 5from setuptools import find_packages, setup 6 7# Don't import gym module here, since deps may not be installed 8sys.path.insert(0, os.path.join(os.path.dirname(__file__), "gym")) 9from version import VERSION 10 11# Environment-specific dependencies. 12extras = { 13 "atari": ["ale-py~=0.7.1"], 14 "accept-rom-license": ["autorom[accept-rom-license]~=0.4.2"], 15 "box2d": ["box2d-py==2.3.5", "pyglet>=1.4.0"], 16 "classic_control": ["pyglet>=1.4.0"], 17 "mujoco": ["mujoco_py>=1.50, <2.0"], 18 "robotics": ["mujoco_py>=1.50, <2.0"], 19 "toy_text": ["scipy>=1.4.1"], 20 "other": ["lz4>=3.1.0", "opencv-python>=3."], 21} 22 23# Meta dependency groups. 24nomujoco_blacklist = set(["mujoco", "robotics", "accept-rom-license"]) 25nomujoco_groups = set(extras.keys()) - nomujoco_blacklist 26 27extras["nomujoco"] = list( 28 itertools.chain.from_iterable(map(lambda group: extras[group], nomujoco_groups)) 29) 30 31 32all_blacklist = set(["accept-rom-license"]) 33all_groups = set(extras.keys()) - all_blacklist 34 35extras["all"] = list( 36 itertools.chain.from_iterable(map(lambda group: extras[group], all_groups)) 37) 38 39setup( 40 name="gym", 41 version=VERSION, 42 description="Gym: A universal API for reinforcement learning environments.", 43 url="https://github.com/openai/gym", 44 author="OpenAI", 45 author_email="jkterry@umd.edu", 46 license="", 47 packages=[package for package in find_packages() if package.startswith("gym")], 48 zip_safe=False, 49 install_requires=[ 50 "numpy>=1.18.0", 51 "cloudpickle>=1.2.0", 52 "importlib_metadata>=4.8.1; python_version < '3.8'", 53 ], 54 extras_require=extras, 55 package_data={ 56 "gym": [ 57 "envs/mujoco/assets/*.xml", 58 "envs/classic_control/assets/*.png", 59 "envs/robotics/assets/LICENSE.md", 60 "envs/robotics/assets/fetch/*.xml", 61 "envs/robotics/assets/hand/*.xml", 62 "envs/robotics/assets/stls/fetch/*.stl", 63 "envs/robotics/assets/stls/hand/*.stl", 64 "envs/robotics/assets/textures/*.png", 65 ] 66 }, 67 tests_require=["pytest", "mock"], 68 python_requires=">=3.6", 69 classifiers=[ 70 "Programming Language :: Python :: 3", 71 "Programming Language :: Python :: 3.6", 72 "Programming Language :: Python :: 3.7", 73 "Programming Language :: Python :: 3.8", 74 "Programming Language :: Python :: 3.9", 75 ], 76) 77