scs
Splitting conic solver
What it is and what it does
scs is a Python binding to the Splitting Conic Solver, a numerical library for solving convex optimization problems formulated as conic programs. It wraps the underlying C solver and exposes it through a Python API, accepting problem data in standard conic form (linear objective, affine constraints, and cone membership constraints) and returning solutions via the solver's splitting algorithm.
The package depends on numpy and scipy for numerical operations and is distributed as prebuilt wheels for modern Python versions on major platforms. It is suitable for applications requiring reliable convex optimization where problems naturally fit the conic framework.
Use it for:
- Solve semidefinite programming problems in machine learning and control theory applications
- Optimize convex cone programs arising in portfolio optimization and financial modeling
- Use as a backend solver in convex optimization frameworks that support conic interfaces
- Prototype and validate convex formulations before deployment to production solvers
- Research and development in optimization algorithms and convex geometry
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
scs is a Python interface to the Splitting Conic Solver, a numerical solver for convex optimization problems expressed in conic form.
Yes, if you need a reliable conic solver for convex optimization. The package is stable (MIT licensed, no known vulnerabilities), has broad platform support via prebuilt wheels, and ranks in the top 5000 PyPI packages by download volume. The aging maintenance status is not a blocker if your use case fits the current feature set; verify that the solver's capabilities match your problem structure before committing.
Install
scs on PyPI
pip
pip install scsuv
uv add scspoetry
poetry add scsInstalling scs
Before you install
Medium install friction due to compiled C extensions; prebuilt wheels available across macOS, Linux, and Windows. Package status is aging (217 days since last release), though no active maintenance issues are evident.
License in practice
MIT License permits unrestricted use, modification, and distribution with minimal restrictions—suitable for commercial and proprietary projects.
Quickstart
import scs
import numpy as np
# Define a simple conic problem and solve
data = {'A': np.array([[1.0, 0.0]]), 'b': np.array([1.0]), 'c': np.array([1.0, 1.0])}
cones = {'f': 0, 'l': 2}
solver = scs.SCS(data, cones)
result = solver.solve()
Requires numpy and scipy; C compiler needed if building from source rather than using prebuilt wheels.
Verify before relying
- Specific solver capabilities and algorithm details beyond the conic interface
- Performance characteristics and scalability limits for large-scale problems
- Whether the aging maintenance status reflects stable maturity or reduced support
Package facts
| License | MIT License Copyright (c) 2017 Brendan O'Donoghue Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 2 — numpy, scipy |
| Maintenance | aging — 217 days since the last release |
| First released | |
| Downloads | 4,052,573/month — #2,389 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: scs-3.2.11-cp310-cp310-macosx_11_0_arm64.whl; scs-3.2.11-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; scs-3.2.11-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl; scs-3.2.11-cp310-cp310-musllinux_1_2_x86_64.whl; scs-3.2.11-cp310-cp310-win_amd64.whl; scs-3.2.11-cp311-cp311-macosx_11_0_arm64.whl; scs-3.2.11-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; scs-3.2.11-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl; scs-3.2.11-cp311-cp311-musllinux_1_2_x86_64.whl; scs-3.2.11-cp311-cp311-win_amd64.whl; scs-3.2.11-cp312-cp312-macosx_11_0_arm64.whl; scs-3.2.11-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; scs-3.2.11-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl; scs-3.2.11-cp312-cp312-musllinux_1_2_x86_64.whl; scs-3.2.11-cp312-cp312-win_amd64.whl; scs-3.2.11-cp313-cp313-macosx_11_0_arm64.whl; scs-3.2.11-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl; scs-3.2.11-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl; scs-3.2.11-cp313-cp313-musllinux_1_2_x86_64.whl; scs-3.2.11-cp313-cp313-win_amd64.whl
Tags
More Mathematics packages
NetworkX provides data structures and…
permissive · top 1,000 on PyPI
kiwisolverkiwisolver is a Python binding to a fast C++…
permissive · top 1,000 on PyPI
sympySymPy is a Python library for symbolic…
permissive · top 1,000 on PyPI
contourpyContourPy calculates contours of 2D…
permissive · top 1,000 on PyPI
torchPyTorch provides GPU-accelerated tensor…
permissive · top 1,000 on PyPI
onnxruntimeonnxruntime loads and executes Open Neural…
permissive · top 1,000 on PyPI
cvxoptcvxopt is a Python library for solving convex…
unclear · top 5,000 on PyPI
MosekMOSEK solves large-scale convex and…
unclear · top 15,000 on PyPI
ecosECOS is a Python wrapper for a numerical solver…
copyleft · top 5,000 on PyPI
clarabelClarabel is an interior-point conic…
permissive · top 5,000 on PyPI
osqpOSQP is a Python wrapper for the Operator…
permissive · top 5,000 on PyPI
cvxpy-basecvxpy-base provides compiled solver kernels for…
permissive · top 15,000 on PyPI
qpsolversProvides a unified Python interface to solve…
copyleft · top 5,000 on PyPI
cvxpyCVXPY is a Python modeling language for…
permissive · top 5,000 on PyPI
convexPython client for Convex, a…
permissive · top 15,000 on PyPI
AeroSandboxAeroSandbox is an optimization toolkit for…
permissive · top 15,000 on PyPI