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 connect
async def main():
async with connect("wss://api.devnet.solana.com") as websocket:
await websocket.logs_subscribe()
first_resp = await websocket.recv()
subscription_id = first_resp[0].result
next_resp = await websocket.recv()
print(next_resp)
await websocket.logs_unsubscribe(subscription_id)
# Alternatively, use the client as an infinite asynchronous iterator:
async with connect("wss://api.devnet.solana.com") as websocket:
await websocket.logs_subscribe()
first_resp = await websocket.recv()
subscription_id = first_resp[0].result
async for idx, msg in enumerate(websocket):
if idx == 3:
break
print(msg)
await websocket.logs_unsubscribe(subscription_id)
asyncio.run(main())
*_unsubscribe() takes the server-assigned subscription ID (first_resp[0].result, as above).
As a convenience it also accepts the request ID returned by the matching *_subscribe() helper,
which is translated once the subscription confirmation has been received. Server-assigned IDs are
resolved first, so prefer that form when you have it.
🔨 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
Release files for solana 0.40.3
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.40.3.tar.gz | 497.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| solana-0.40.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 546.3 kB
Release files / solana-0.40.3.tar.gz
| Download URL | solana-0.40.3.tar.gz |
|---|---|
| Size | 497.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
279e6f17efe477f0cb4dfacbea57dda6a2b78511e85ccd9e8eb8fd850b4e19bc
|
|
BLAKE2b-256 checksum How to use checksums |
1308e8f166f9eb6325bbfd36c43753e8e045d5e5676825f6a0967e5c001d3cca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","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.40.3-py3-none-any.whl
| Download URL | solana-0.40.3-py3-none-any.whl |
|---|---|
| Size | 49.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c26923d66c9d962e36808f34553e4977e447b966f36561588d97c396cb9607a
|
|
BLAKE2b-256 checksum How to use checksums |
e3c747548cd65aa1f9453289b0f35f19b180ab8de92b67237e0fc7aab0b09a45
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","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}
|