Skip to main content

Python interface for controlling OpenDSS Powered by EPRI.

Project description

๐Ÿ py-dss-interface: Python Control for OpenDSS Powered by EPRI

PyPI Platform License AppVeyor PyPI Downloads

py-dss-interface is a Python package to control OpenDSS Powered by EPRI using the Python programming language. This tool is actively used across multiple EPRI research projects and by many utilities and consultants. It also serves as the foundation for the automated testing process of OpenDSS itself.


๐Ÿš€ What Can You Do With py-dss-interface?

Use the full power of Python to control and automate your OpenDSS workflows:

  • โš™๏ธ Automate repetitive OpenDSS tasks.
  • ๐Ÿง  Manipulate circuit, element, and bus properties with Python logic.
  • ๐Ÿ“Š Extract simulation results and generate custom reports.
  • ๐Ÿงฎ Implement advanced analysis and algorithms using Python.

๐Ÿ”„ Why Use py-dss-interface Instead of the COM Interface?

Compared to the COM interface, py-dss-interface provides a modern, Pythonic experience:

  • ๐Ÿ’ก Code Completion: Works seamlessly with IDEs like PyCharm for better developer productivity.
  • ๐Ÿ“ฆ No OpenDSS Installation Required (Windows): No need to install OpenDSS since py-dss-interface comes bundled with a tested version of OpenDSS. However, you may also use a different OpenDSS version if desired. Please note that compatibility is only guaranteed for the bundled version.
  • ๐Ÿ”„ Supports Multiple DSS Objects: Interact with multiple OpenDSS objects at the same time.
  • ๐ŸŒ Multi-Platform: Supports both Windows and now Linux (via local OpenDSS C++ build).
  • โšก Better Performance: Some examples comparing performance will be provided later.
  • ๐Ÿ” Version Control Friendly (Windows): Avoid breaking your Python code when updating the OpenDSS version on your computer.

๐Ÿ’ป Platform Support

โœ… Windows

pip install py-dss-interface

๐Ÿง Linux (OpenDSS C++ Build Required)

To use py-dss-interface on Linux, you'll need to build the OpenDSS C++ engine locally.

๐Ÿ”ง Step 1: Clone the repository

git clone https://github.com/PauloRadatz/py_dss_interface.git
cd py_dss_interface

This will create a folder named py_dss_interface โ€” youโ€™ll use this path later when installing the package.

โš™๏ธ Step 2: Build the OpenDSS C++ engine

bash py_dss_interface/OpenDSSLinuxCPPForRepo.sh

๐Ÿ“Œ Note: You'll need tools for building C++ code on your system (e.g., g++, cmake, etc.).

๐Ÿ“ฆ Step 3: Install the package in your Python environment

If you're using py-dss-interface in your own Python project or script, install it like this:

pip install path/to/py_dss_interface

๐Ÿ“ฆ Quickstart Example

import py_dss_interface

dss = py_dss_interface.DSS()
dss.text("compile path/to/circuit.dss")
dss.text("solve")
print(dss.circuit.total_power)

๐Ÿ“– Documentation

๐Ÿ“– Full documentation available at: ๐Ÿ‘‰ https://py-dss-interface.readthedocs.io/en/latest/


๐ŸŽ“ Learn More

๐Ÿ“˜ Comprehensive Online Course

The best way to master py-dss-interface is through the official course:

๐Ÿ‘‰ Try the first modules for free

๐Ÿ“บ YouTube Playlists


๐Ÿงฉ Tools Built on py-dss-interface


๐Ÿ“‚ Where to Find Examples

  • ๐Ÿ“ OpenDSS Repository
  • ๐Ÿ“ Local Installation: After installing OpenDSS on your Windows computer, navigate to: C:\\Program Files\\OpenDSS\\Examples\\Python\\py-dss-interface

๐Ÿค Community and Support

  • ๐Ÿ’ฌ Open an Issue on GitHub for bugs or feature requests.
  • ๐Ÿ™Œ Contributions welcome! Please open a pull request with clear descriptions.
  • ๐Ÿ’ป Questions? Join discussions in the OpenDSS user forums or comment on relevant YouTube videos.

๐Ÿ“š How to Cite

If you use py-dss-interface in your academic work, please reference it as follows:

APA Style:

Radatz, P. (2025). py-dss-interface: A Python package that interfaces with OpenDSS powered by EPRI (Version X.X.X) [Computer software]. GitHub. https://github.com/PauloRadatz/py_dss_interface

BibTeX Entry:

@software{radatz2024bdgd2opendss,
  author = {Paulo Radatz},
  title = {py-dss-interface: A Python package that interfaces with OpenDSS powered by EPRI},
  year = {2025},
  version = {X.X.X},
  url = {https://github.com/PauloRadatz/py_dss_interface}
}

๐Ÿ“Œ Please replace X.X.X with the version of the package you are using.


๐Ÿ™ Acknowledgements

Developed and maintained by Paulo Radatz, with support from EPRI and the global OpenDSS community.

Special thanks to รŠnio Viana and Rodolfo Pilar Londero for their contributions to the first version of this tool.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_dss_interface-2.2.1.tar.gz (29.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_dss_interface-2.2.1-py3-none-any.whl (15.0 MB view details)

Uploaded Python 3

File details

Details for the file py_dss_interface-2.2.1.tar.gz.

File metadata

  • Download URL: py_dss_interface-2.2.1.tar.gz
  • Upload date:
  • Size: 29.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for py_dss_interface-2.2.1.tar.gz
Algorithm Hash digest
SHA256 34a320bf46d8618d052659480adb32ee36b46c9d32c94e07cb7677dbc6765be4
MD5 e5767c03d2aa7bcd86bf071562c3c153
BLAKE2b-256 1fb1d4d4176f97b9f188bdb4580d3339db3156d790639583907e2286af225d39

See more details on using hashes here.

File details

Details for the file py_dss_interface-2.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for py_dss_interface-2.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 98bd779bc2430d64dd77dc6689b456f5579e067483dc9bbf32c2f93b7ef773d6
MD5 367923af5bc705ad5d64226c6bc8bf4a
BLAKE2b-256 501fde3c80bfffa004049f7c9b97576b920b950d2c2916ef42098ac6bb0b87a2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page