Building wheels for Windows
NOTE: By default, this works only on Windows due to platform settings in file setup.py.
Requirements
- Visual Studio
- CMake (currently pyfmipp works only with CMake 3.x)
- Python: install packages
wheel
andsetuptools
using pip:pip install wheel setuptools
Building the wheel
-
build the FMI++ library (using CMake and Visual Studio)
- use commits starting from 10b4dbe
-
copy the libraries (FMI++, Boost, SUNDIALS, MSVC runtime):
- <fmipp-build-dir>\export\swig\fmippex.py : copy to <py-fmipp-dir>\fmipp\export
- <fmipp-build-dir>\import\swig\fmippim.py : copy to <py-fmipp-dir>\fmipp
- <fmipp-build-dir>\import\swig\Release_fmippim.pyd : copy to <py-fmipp-dir>\fmipp\lib
- <fmipp-build-dir>\import\swig\Release_fmippex.pyd : copy to <py-fmipp-dir>\fmipp\lib
- <fmipp-build-dir>\Release\fmippim.dll : copy to <py-fmipp-dir>\fmipp\lib
- <fmipp-build-dir>\Release\fmippex.dll : copy to <py-fmipp-dir>\fmipp\lib
- <fmipp-build-dir>\Release\fmi2.dll : copy to <py-fmipp-dir>\fmipp\export\bin
- <fmipp-build-dir>\Release\libfmipp_fmu_frontend.lib : copy to <py-fmipp-dir>\fmipp\export\bin
- <sundials-lib-dir>\sundials_cvode.dll : copy to <py-fmipp-dir>\fmipp\lib
- <boost-lib-dir>\boost_filesystem-.dll : copy to <py-fmipp-dir>\fmipp\lib
- MSVC runtime libraries (e.g., msvcp140.dll & vcruntime.dll) : copy to <py-fmipp-dir>\fmipp\lib
-
run
python setup.py bdist_wheel --python-tag <python_tag> -p <platform_tag>
in the command line, where:<python_tag>
is the python version used (e.g.cp39
)<platform_tag>
refers to the platform used (i.e.win32
orwin_amd64
)
NOTE: There are batch scripts available in subfolder release for automating the build for several configurations (win32/win_amd64, cp27/cp36/cp37).
NOTE: SUNDIALS version 3.1.2 is required.
Installation from local
- to install the wheel run:
pip install path\to\wheel\fmipp-<version>-<python_tag>-none-<platform_tag>.whl
Creating source distribution packages for Linux
NOTE: By default, this works only on Linux due to platform settings in file setup.py.
Requirements
- make sure to have installed (e.g. via
apt-get
oraptitude
):- Python (package python-dev)
- pip (package python-pip)
- git (package git)
- install package
setuptools
usingpip
:
pip install setuptools
- download the FMI++ source code into subfolder source (./source/fmipp) using
git
:
cd source
git clone https://github.com/fmipp/fmipp.git fmipp
rm -rf fmipp/.git
Generating the source distribution package
- to create the fmipp-<version>.tar.gz source distribution file run:
python3 setup.py sdist
Installation from local
- make sure to have installed (e.g. via
apt-get
oraptitude
):- SWIG (package swig)
- SUNDIALS (package libsundials-serial-dev, version == 3.1.2)
- Boost (package libboost-all-dev)
- to install the source distribution run:
python3 -m pip install /path/to/sdist/fmipp-<version>.tar.gz
Uploading to PyPI
- install twine via
pip install twine
- run
twine upload dist\*
Installation from PyPI
Windows
- run
pip install fmipp --prefer-binaries
- to re-download the package instead of using a cached version, set the flag
--no-cache-dir
Linux (Ubuntu 20.04)
- Requirements: make sure to have installed (e.g. via
apt
) the following dependencies- Python (package python3)
- SWIG (package swig)
- SUNDIALS (package libsundials-serial-dev, version == 3.1.2)
- Boost (package libboost-all-dev)
- pip (package python3-pip)
- run
pip install fmipp