A fork of https://github.com/openfheorg/openfhe-python to add some missing functionality

yspolyakov d34907661f Merge pull request #115 from openfheorg/dev před 8 měsíci
docker 971c0d342b Adds a docker file, updates instructions, and increments the version (#109) před 9 měsíci
docs 057120d9e4 Add files for PyPI packaging před 9 měsíci
examples 24d4483265 December Release Updates (#88) před 11 měsíci
openfhe 057120d9e4 Add files for PyPI packaging před 9 měsíci
src 021dda7812 Add EvalKey serialization (#106) před 9 měsíci
.gitignore 262fd663a7 Generate stubbed package with shell script před 9 měsíci
CMakeLists.txt 1526e3be28 restricted to v1.1.2 of OpenFHE (#114) před 8 měsíci
LICENSE 72c9603a08 Initial commit před 1 rokem
README.md 1526e3be28 restricted to v1.1.2 of OpenFHE (#114) před 8 měsíci
build_package.sh 262fd663a7 Generate stubbed package with shell script před 9 měsíci
setup.py 262fd663a7 Generate stubbed package with shell script před 9 měsíci

README.md

Official Python wrapper for OpenFHE

Table of Contents

Running from Docker

Please see Instructions for the Docker setup

Building from Source

Requirements

Before building, make sure you have the following dependencies installed:

Note that currently OpenFHE 1.1.3 is not supported by the Python wrapper. The support will be added later.

We recommend following OpenFHE C++ installation instructions first (which covers Linux, Windows and MacOS) and then get back to this repo. See notes on installing pybind11 below

Linux

System-level installation

To install OpenFHE-python directly to your system, ensure the dependencies are set up. Then clone the repository, open a terminal in the repo folder and run the following commands:

pip install "pybind11[global]" 
mkdir build
cd build
cmake ..  # Alternatively, cmake .. -DOpenFHE_DIR=/path/to/installed/openfhe if you installed OpenFHE elsewhere
make
make install  # You may have to run sudo make install

At this point the .so file has been built. Your exact installation process will depend on your virtual environment. Cmake will automatically find the python installation path, if unwanted, you can specify the python path by adding -DPYTHON_EXECUTABLE_PATH=/path/to/python to the cmake command.

If you see an error saying that one of OpenFHE .so files cannot be found when running a Python example (occurs only for some environments), add the path where the .so files reside to the PYTHONPATH environment variable:

export PYTHONPATH=(path_to_OpenFHE_so_files):$PYTHONPATH

In some environments (this happens rarely), it may also be necessary to add the OpenFHE libraries path to LD_LIBRARY_PATH.

Conda

Alternatively you can install the library and handle the linking via Conda. Clone the repository, open a terminal in the repo folder and run the following commands:

conda create -n ${ENV_NAME} python=3.{X} anaconda

where ${ENV_NAME} should be replaced with the name of your environment, and {X} should be replaced with your desired python version. For example you might have conda create -n openfhe_python python=3.9 anaconda. Now, you would install pybind11 either via:

pip install "pybind11[global]" or via conda install -c conda-forge pybind11, but for now we recommend using the first method, with pip. Some users have reported issues when using the conda pybind11

Now, you would clone the repository, and run the following commands to install :

mkdir build
cd build
cmake .. # Add in -DOpenFHE_DIR=/path/to/installed/openfhe if you installed OpenFHE elsewhere
make
make install  # You may have to run sudo make install

Then, you can develop the library to link

cd ..
mkdir lib
mv *.so lib
conda develop lib

which creates a lib folder, moves the built .so file into that lib folder, and tells conda where to look for external libraries.

Note You may wish to copy the .so file to any projects of your own, or add it to your system path to source from.

Code Examples

To get familiar with the OpenFHE Python API, check out the examples:

OpenFHE Python Wrapper Documentation

OpenFHE Python Wrapper API Reference

Contributing Guide

OpenFHE Development - Contributing Guide