Solana.py
🐍 The Solana Python SDK 🐍
Solana.py is the base Python library for interacting with Solana. You can use it to build transactions and interact with the Solana JSON RPC API, much like you would do with solana-web3.js
It also covers the SPL Token Program.
Note: This library uses many core types from the Solders package which used to be provided by solana-py itself. If you are upgrading from an old version and you're looking for something that was deleted, it's probably in solders now.
⚓︎ See also: AnchorPy, a Python client for Anchor-based programs on Solana. ⚓︎
⚡ Quickstart
Installation
- Install Python bindings for the solana-sdk.
pip install solders
- Install this package to interact with the Solana JSON RPC API.
pip install solana
General Usage
Async API Client
import asyncio
from solana.rpc.async_api import AsyncClient
async def main():
async with AsyncClient("https://api.devnet.solana.com") as client:
res = await client.is_connected()
print(res) # True
# Alternatively, close the client explicitly instead of using a context manager:
client = AsyncClient("https://api.devnet.solana.com")
res = await client.is_connected()
print(res) # True
await client.close()
asyncio.run(main())
Websockets Client
import asyncio
from asyncstdlib import enumerate
from solana.rpc.websocket_api import SolanaWsClient
async def main():
async with SolanaWsClient("wss://api.devnet.solana.com") as websocket:
# Returns once the server has confirmed the subscription.
subscription = await websocket.logs_subscribe()
msg = await websocket.recv()
print(msg)
await websocket.unsubscribe(subscription)
# Alternatively, use the client as an infinite asynchronous iterator:
async with SolanaWsClient("wss://api.devnet.solana.com") as websocket:
subscription = await websocket.logs_subscribe()
async for idx, msg in enumerate(websocket):
if idx == 3:
break
print(msg)
await websocket.unsubscribe(subscription)
asyncio.run(main())
Each *_subscribe() helper awaits the server confirmation and returns a Subscription
handle that carries the server-assigned subscription ID and its kind. Pass that handle to
unsubscribe(); there are no per-method *_unsubscribe() helpers and no raw subscription
IDs in the public API. A handle belongs to the connection that created it, and
recv() yields notifications only — subscription confirmations never appear in the stream.
signature_subscribe() is one-shot: the server cancels it after the notification, so the
client drops its local handle once the SignatureNotification arrives. Calling
unsubscribe() for it afterwards raises ValueError.
🔨 Development
Setup
- Install uv
- Install dev dependencies:
uv sync
- Activate the virtual environment.
.venv\Scripts\activate # Windows
source .venv/bin/activate # Linux/macOS
Lint
make lint
Tests
# All tests
make tests
# Unit tests only
make unit-tests
# Integration tests only
make int-tests
Documentation
To build documentation from source files run:
make build-docs
To serve documentation locally run:
make serve
Metadata
Release files for solana 0.41.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| solana-0.41.0.tar.gz | 511.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| solana-0.41.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 563.7 kB
Release files / solana-0.41.0.tar.gz
| Download URL | solana-0.41.0.tar.gz |
|---|---|
| Size | 511.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a8f3b31789256c69c2c0e260f00a4d540627cc3e860f0c4462342ead3390eaf5
|
|
BLAKE2b-256 checksum How to use checksums |
53ad70c3f71e3452b157ee160593483dd9c33d5c874157b670e467901716bddf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / solana-0.41.0-py3-none-any.whl
| Download URL | solana-0.41.0-py3-none-any.whl |
|---|---|
| Size | 52.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7b8efcef938d75b94a62e995383f59f68b566b0a01ad1694ca62591560da7e47
|
|
BLAKE2b-256 checksum How to use checksums |
ab05c6795aa0f5240b7698475e6434c0e1dcaa7657b55cb6361cf4859886a3fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|