mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2024-12-22 20:36:01 +01:00
.. | ||
pyqmckl | ||
src | ||
test | ||
build_pyqmckl.sh | ||
manual_install_pyqmckl.sh | ||
pip_install_pyqmckl.sh | ||
pyproject.toml | ||
README.md | ||
requirements.txt | ||
setup.py |
Python API of the QMCkl library
Requirements
setuptools
numpy
swig
(>= 4.0)
Manual installation
- Install the QMCkl library (see upstream instructions)
./manual_install_pyqmckl.sh
which should do the following- Copy the produced
_pyqmckl.so
andpyqmckl.py
files into your working directory and do not forget toimport pyqmckl
in your Python scripts
The second step executes the following under the hood:
./build_pyqmckl.sh
<c-compiler> -I/usr/include/python3.8 -c -fPIC pyqmckl_wrap.c
to compile the wrapper code into an object file using the<c-compiler>
(replace with your C compiler, e.g.gcc
) on your machine<c-compiler> -shared pyqmckl_wrap.o -lqmckl -o _pyqmckl.so
to produce the final C extension (this requires theqmckl
library to be installed and present in the linking paths together with all its dependencies liketrexio
)
Python-ic installation (recommended)
- Install the QMCkl library (see upstream instructions)
./pip_install_pyqmckl.sh
The last step runs ./build_pyqmckl.sh
, copies the result
into the pyqmckl/
directory and then runs
pip install .
to install the pyqmckl
Python
package in your environment.
SWIG pre-processing
Both aforementioned steps call build_pyqmckl.sh
script
which does the following pre-processing for SWIG
- Copy the latest
qmckl.h
file froninclude/
into thesrc/
directory python process_header.py
to generatepyqmckl_include.i
list of SWIG patternsswig -python -py3 -builtin -threads -o pyqmckl_wrap.c pyqmckl.i
to generate the SWIG wrapper code in C andpyqmckl.py
module in Python. Note: for this to work three files have to be present in the working directory:pyqmckl.i
,pyqmckl_include.i
andnumpy.i
.