| # Unity ML-Agents Python Interface | |
| The `mlagents_envs` Python package is part of the | |
| [ML-Agents Toolkit](https://github.com/Unity-Technologies/ml-agents). | |
| `mlagents_envs` provides three Python APIs that allows direct interaction with the | |
| Unity game engine: | |
| - A single agent API (Gym API) | |
| - A gym-like multi-agent API (PettingZoo API) | |
| - A low-level API (LLAPI) | |
| The LLAPI is used by the trainer implementation in `mlagents`. | |
| `mlagents_envs` can be used independently of `mlagents` for Python | |
| communication. | |
| ## Installation | |
| Install the `mlagents_envs` package with: | |
| ```sh | |
| python -m pip install mlagents_envs==0.30.0 | |
| ``` | |
| ## Usage & More Information | |
| See | |
| - [Gym API Guide](../docs/Python-Gym-API.md) | |
| - [PettingZoo API Guide](../docs/Python-PettingZoo-API.md) | |
| - [Python API Guide](../docs/Python-LLAPI.md) | |
| for more information on how to use the API to interact with a Unity environment. | |
| For more information on the ML-Agents Toolkit and how to instrument a Unity | |
| scene with the ML-Agents SDK, check out the main | |
| [ML-Agents Toolkit documentation](../docs/Readme.md). | |
| ## Limitations | |
| - `mlagents_envs` uses localhost ports to exchange data between Unity and | |
| Python. As such, multiple instances can have their ports collide, leading to | |
| errors. Make sure to use a different port if you are using multiple instances | |
| of `UnityEnvironment`. | |
| - Communication between Unity and the Python `UnityEnvironment` is not secure. | |
| - On Linux, ports are not released immediately after the communication closes. | |
| As such, you cannot reuse ports right after closing a `UnityEnvironment`. | |