Skip to main content

Poke-env: Python Interface for Pokemon Showdown Bots

PyPI version fury.io PyPI pyversions License: MIT Documentation Status codecov

poke-env is a Python library for building scripted agents, self-play experiments, and reinforcement learning workflows on Pokemon Showdown.

A simple agent in action

Installation

This project requires Python >= 3.10 and access to a Pokemon Showdown server. For training and local development, running your own server is strongly recommended.

pip install poke-env

You can use smogon's server to try out your agents against humans, but having a development server is strongly recommended. In particular, it is recommended to use the --no-security flag to run a local server with most rate limiting and throttling turned off. Please refer to the docs for detailed setup instructions.

git clone https://github.com/smogon/pokemon-showdown.git
cd pokemon-showdown
npm install
cp config/config-example.js config/config.js
node pokemon-showdown start --no-security

First local battle

Once your local server is running, the quickest way to verify your setup is to run two built-in players against each other. RandomPlayer uses the default localhost server configuration, so this script should work as-is:

import asyncio

from poke_env.player import RandomPlayer


async def main():
    player_1 = RandomPlayer(max_concurrent_battles=1)
    player_2 = RandomPlayer(max_concurrent_battles=1)

    await player_1.battle_against(player_2, n_battles=1)

    print(f"Finished battles: {player_1.n_finished_battles}")
    print(f"Player 1 wins: {player_1.n_won_battles}")


if __name__ == "__main__":
    asyncio.run(main())

To build your own bot, subclass Player and override choose_move. The quickstart guide walks through that step by step.

Documentation and examples

Documentation, detailed examples, and starting code are available on Read the Docs.

Useful entry points:

Development version

You can also clone the latest master version with:

git clone https://github.com/hsahovic/poke-env.git

Dependencies and development dependencies can then be installed with:

cd poke-env
uv sync --dev

Run development commands through uv run, for example uv run pytest unit_tests/.

Acknowledgements

This project is a follow-up of a group project from an artificial intelligence class at Ecole Polytechnique.

You can find the original repository here. It is partially inspired by the showdown-battle-bot project. Of course, none of these would have been possible without Pokemon Showdown.

Team data comes from Smogon forums' RMT section.

Data

Data files are adapted versions of the js data files from Pokemon Showdown.

License

License: MIT

Citing poke-env

@misc{poke_env,
    author       = {Haris Sahovic},
    title        = {Poke-env: pokemon AI in python},
    url          = {https://github.com/hsahovic/poke-env}
}

Metadata

Release files for poke-env 0.16.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for poke-env 0.16.1
File Size Uploaded Provenance Actions
poke_env-0.16.1.tar.gz 1.3 MB Without provenance Details for poke_env-0.16.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for poke-env 0.16.1
File Interpreter ABI Platform Actions
poke_env-0.16.1-py3-none-any.whl Python 3 none any Details for poke_env-0.16.1-py3-none-any.whl

Total release size: 2.7 MB

Release files / poke_env-0.16.1.tar.gz

Download URL poke_env-0.16.1.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
b2b8453d3670b39929606a08bd35538202d4568cc2017e9d7c4884869dcad5b8
BLAKE2b-256 checksum
How to use checksums
5b7e67a2db17fe509860d0478da687c36d744ef818288f69cd6365f961cdf0ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / poke_env-0.16.1-py3-none-any.whl

Download URL poke_env-0.16.1-py3-none-any.whl
Size 1.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
e61c548fddabfcf73f4eaa5ccfa2c0d52b0582433805fba96385275dc52b41a4
BLAKE2b-256 checksum
How to use checksums
e30b841ed145f6060aa35de2a28f703a76087ff7b7a19ea2cd2de5f8d08cccea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Security for poke-env 0.16.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.16.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page