skillfed

eth-brownie

A Python framework for Ethereum smart contract deployment, testing and interaction.

eth-brownie v1.22.2 98.0K downloads/30d#13,113 on PyPI2,723
Permissive license MIT Active released

What it is and what it does

Brownie is a Python-based framework for writing, testing, and deploying smart contracts on Ethereum and EVM-compatible networks. It provides full support for Solidity (≥0.4.22) and Vyper (≥0.1.0-beta.16) contracts, integrating with pytest for unit and integration testing, hypothesis for property-based testing, and offering built-in debugging tools with Python-style tracebacks and custom error reporting. The framework includes a console for interactive project exploration and trace-based coverage evaluation.

The package depends on 83 runtime libraries spanning Ethereum utilities (eth-account, eth-abi, eth-keys), async networking (aiohttp, aiohappyeyeballs), and cryptographic primitives (ckzg, eip712). Installation is straightforward via pip or pipx, though the large dependency tree creates medium friction. Critically, the project description states Brownie is no longer actively maintained and recommends Ape Framework as an alternative for new work.

Use it for:

  • Write and test Solidity or Vyper smart contracts locally using pytest before deploying to mainnet or testnet.
  • Debug contract interactions with Python-style tracebacks and custom error messages during development.
  • Run property-based tests on contract logic using hypothesis to find edge cases and invariant violations.
  • Deploy and interact with contracts programmatically via a Python console or script without manual RPC calls.
  • Measure test coverage of smart contracts using trace-based analysis integrated into the test suite.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Brownie is a Python framework for developing, testing, and deploying smart contracts on the Ethereum Virtual Machine, supporting both Solidity and Vyper with pytest-based testing and debugging tools.

Yes-with-conditions. Brownie is stable, well-documented, and suitable for Ethereum smart contract development if you are maintaining an existing project or learning EVM development. However, the project's stated lack of active maintenance and explicit recommendation to migrate to Ape Framework means new projects should strongly consider Ape instead. Install only if you have a specific reason to use Brownie (legacy codebase, team familiarity, or learning purposes) and are comfortable with infrequent updates.

Install

eth-brownie on PyPI

pip

pip install eth-brownie

uv

uv add eth-brownie

poetry

poetry add eth-brownie

Installing eth-brownie

Before you install

Medium install friction with 83 runtime dependencies across multiple compiled and pure-Python packages. The project is actively maintained (last commit 2026-08-05, release 54 days ago) and supports Python 3.10–3.14 with prebuilt wheels for major platforms. However, the description explicitly states Brownie is no longer actively maintained and recommends Ape Framework as an alternative.

License in practice

Licensed under MIT (permissive), allowing commercial and private use with minimal restrictions. No notable licensing constraints for typical development or deployment scenarios.

Quickstart

pip install eth-brownie

from brownie import project

p = project.load('.')
contract = p.MyContract.deploy()

Requires Python 3.10 or greater, plus an external Ethereum node (hardhat or ganache) running locally or accessible via RPC for contract deployment and testing.

Verify before relying

  • Current adoption and active user base given the stated lack of active maintenance and recommendation to migrate to Ape Framework.
  • Stability and compatibility of the 83 runtime dependencies in real-world projects, especially after upstream upgrades.
  • Whether the medium install friction and dependency count create practical maintenance burden for new projects.

Package facts

License MIT (permissive)
Python support supports the current Python release (<4,>=3.10)
Install friction medium — platform-specific wheel
Runtime dependencies 83 — aiohappyeyeballs, aiohttp, aiosignal, annotated-types, asttokens, async-timeout, attrs, bitarray, cbor2, cchecksum, certifi, charset-normalizer, ckzg, colorama, cytoolz, eip712, eth-abi, eth-account, eth-event, eth-hash, eth-keyfile, eth-keys, eth-pydantic-types, eth-rlp, eth-typing, eth-utils, exceptiongroup, execnet, faster-eth-abi, faster-eth-utils
Maintenance actively maintained — 54 days since the last release
Last repo commit
First released
Downloads 98,035/month — #13,113 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: eth_brownie-1.22.2-cp310-cp310-macosx_11_0_arm64.whl; eth_brownie-1.22.2-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl; eth_brownie-1.22.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; eth_brownie-1.22.2-cp310-cp310-musllinux_1_2_x86_64.whl; eth_brownie-1.22.2-cp310-cp310-win32.whl; eth_brownie-1.22.2-cp310-cp310-win_amd64.whl; eth_brownie-1.22.2-cp311-cp311-macosx_11_0_arm64.whl; eth_brownie-1.22.2-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl; eth_brownie-1.22.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; eth_brownie-1.22.2-cp311-cp311-musllinux_1_2_x86_64.whl; eth_brownie-1.22.2-cp311-cp311-win32.whl; eth_brownie-1.22.2-cp311-cp311-win_amd64.whl; eth_brownie-1.22.2-cp312-cp312-macosx_11_0_arm64.whl; eth_brownie-1.22.2-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl; eth_brownie-1.22.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; eth_brownie-1.22.2-cp312-cp312-musllinux_1_2_x86_64.whl; eth_brownie-1.22.2-cp312-cp312-win32.whl; eth_brownie-1.22.2-cp312-cp312-win_amd64.whl; eth_brownie-1.22.2-cp313-cp313-macosx_11_0_arm64.whl; eth_brownie-1.22.2-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl

Keywords: brownie

Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Software Development :: Build Tools

Tags

ethereum smart contract frameworksolidity testing pythonevm development toolssmart contract deploymentvyper contract testingethereum pytest frameworkblockchain contract debugging
ethereum-developmentsmart-contractstesting-framework

More Build Tools packages