.. _building:
Building ManimPango
===================
Linux/MacOS
-----------
For building **ManimPango**, you need
* a C compiler
* Python's development headers
* `pkg-config `_
* `Pango `_ along with its development headers and its dependencies.
If you are on MacOS, you can use `brew `_ to install those. Using
`MacPorts `_ is also possible.
.. code-block::
brew install pango pkg-config
If you are on Linux, you can use a system package manager to do so. For example, if you
are on Debian based system, you can use ``apt``
.. code-block::
apt install libpango1.0-dev pkg-config python3-dev
**Arch Linux:** ``pacman -S pango pkgconf``
**Fedora:** ``dnf install pango-devel pkg-config python3-devel``
Or similar in your system's package manager.
Using ``tar`` archives
~~~~~~~~~~~~~~~~~~~~~~
If you don't want to contribute to this repository, you can use the tar archives published
on PyPi, or just use ``pip`` to install using
.. code-block:: bash
pip install manimpango --no-binary :all:
**Note**: ``pip`` by default uses wheels, so make sure to pass the ``--no-binary`` parameter.
Using ``git`` clones / Contributing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Please remember to do this inside your virtual environment, if you want to use
your **Manimpango** with **Manim**.
.. code-block:: sh
python -m venv ./venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
If you are using a clone of this repository, you will need `Cython `_
which can be easily installed using ``pip``:
.. code-block:: sh
pip install Cython
After that you can use ``pip`` to install the clone with the following command:
.. code-block:: sh
pip install -e .
pip install -r requirements-dev.txt .
Next, build the library inplace using:
.. code-block:: sh
python setup.py build_ext -i
After installation is complete, you should be able to run pytest:
.. code-block:: sh
pytest
Windows
-------
.. note::
If you are a normal user, don't read this, you have wheels which you can
just install directly using pip.
If you want to contribute to **ManimPango** and you are on Windows, this section is
for you.
As Windows does not include a C compiler by default, you will first need to install
one. You have two choices:
1. :ref:`mingw`
2. :ref:`msvc`
.. _mingw:
MinGW/Msys2
~~~~~~~~~~~
1. Download **MSYS2** from the download link provided on their page https://www.msys2.org/#installation and install it according to their instructions.
2. Once you have **MSYS2** installed, it offers you three different shells: the **MinGW32** shell, the **MinGW64** shell and **MSYS** shell. In order for the following steps to work, you have to open the **MSYS2 MinGW64** shell (you can search for this). Small hint: it has a blue color logo.
3. Run the following commands to install Python, Pango, Cython, Numpy, Scipy, Pillow, Pycairo and ffmpeg
.. code-block::
pacman -S mingw-w64-x86_64-python
pacman -S mingw-w64-x86_64-python-pip
pacman -S mingw-w64-x86_64-pango
pacman -S mingw-w64-x86_64-cython
pacman -S mingw-w64-x86_64-python-numpy
pacman -S mingw-w64-x86_64-python-scipy
pacman -S mingw-w64-x86_64-python-pillow
pacman -S mingw-w64-x86_64-python-cairo
pacman -S mingw-w64-x86_64-ffmpeg
4. Still in the same shell, install **Manim** using ``pip install manim``.
5. Finally, get your clone of **ManimPango**, ``cd`` into that directory and then run ``pip install -e .``.
.. note::
You can't use it with your regular Python version. It will cause weird errors if you
do so. For working with **ManimPango**, you must be inside the `MSYS2 MINGW64 shell`.
6. You can then use ``manim`` inside that shell, to run **Manim**.
.. note::
If you want to try out Python interactively, you can open `idle` using the command
``python -m idlelib`` inside that shell.
.. _msvc:
Visual Studio
~~~~~~~~~~~~~
First, install Visual Studio as specified in https://wiki.python.org/moin/WindowsCompilers.
Possibly Visual Studio Build Tools 2022 with Windows11 SDK.
Then run the script at ``packing/download_dlls.py``. This will get a **Pango** build along
with ``pkg-config`` and install it at ``C:\cibw\vendor``. Add ``C:\cibw\vendor\bin`` and
``C:\cibw\vendor\pkg-config\bin`` to PATH.
.. note::
You can change the install location by editing line 24 of the
file ``packing/download_dlls.py``.
Then set an environment variable ``PKG_CONFIG_PATH=C:\cibw\vendor\lib\pkgconfig``.
Then you can install Cython using
.. code-block:: sh
pip install Cython
Finally, you can install your local **ManimPango** clone just like any other python
package by typing:
.. code-block:: sh
pip install -e .
.. important::
You have to to use https://docs.python.org/3/library/os.html#os.add_dll_directory
before running **ManimPango**. This is applicable for Python 3.8 and above.
.. code-block:: python
import os
os.add_dll_directory('C:\cibw\vendor\bin')
Note that this is done automatically when running test suite.