mirror of
https://github.com/jeertmans/manim-slides.git
synced 2025-08-06 14:19:52 +08:00
chore(deps): make Qt backend optional (#350)
* chore(deps): make Qt backend optional TODO: - [ ] Add relevant entry in CHANGELOG - [ ] Update install documentation - [ ] Make sure `manim-slides convert` can run without any Qt backend - [ ] Make sure test suite works (partially) without any Qt backend - [ ] Make sure we can import `manim_slides` without any Qt backend * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * chore(deps): some fixes but wip * chore(docs): update * chore(deps): support PyQt6 * chore(deps): make Qt backend optional TODO: - [ ] Add relevant entry in CHANGELOG - [ ] Update install documentation - [ ] Make sure `manim-slides convert` can run without any Qt backend - [ ] Make sure test suite works (partially) without any Qt backend - [ ] Make sure we can import `manim_slides` without any Qt backend * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * chore(deps): some fixes but wip * chore(docs): update * chore(deps): support PyQt6 * fix(deps): ci and docs * fix(lib): missing package * chore(ci): does it work? * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * chore(test): skip failing * chore(docs): update * chore(docs): update * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix(docs): typo * fix(test): quit instead of shutdown --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
@ -48,11 +48,11 @@ pdm install -Gmanimgl # For ManimGL
|
||||
Additionnally, Manim Slides comes with groups of dependencies for development purposes:
|
||||
|
||||
```bash
|
||||
pdm install -dGdev # For linters and formatters
|
||||
pdm install -Gdev # For linters and formatters
|
||||
# or
|
||||
pdm install --dGdocs # To build the documentation locally
|
||||
pdm install -Gdocs # To build the documentation locally
|
||||
# or
|
||||
pdm install --dGtests # To run tests
|
||||
pdm install -Gtest # To run tests
|
||||
```
|
||||
|
||||
:::{note}
|
||||
|
@ -34,16 +34,23 @@ If you install Manim from its git repository, as suggested by ManimGL,
|
||||
make sure to first check out a supported version (e.g., `git checkout tags/v1.6.1`
|
||||
for ManimGL), otherwise it might install an unsupported version of Manim!
|
||||
See [#314](https://github.com/jeertmans/manim-slides/issues/314).
|
||||
|
||||
Also, note that ManimGL uses outdated dependencies, and may
|
||||
not work out-of-the-box. One example is NumPy: ManimGL
|
||||
does not specify any restriction on this package, but
|
||||
only `numpy<1.25` will work, see
|
||||
[#2053](https://github.com/3b1b/manim/issues/2053).
|
||||
:::
|
||||
|
||||
<!-- end deps -->
|
||||
|
||||
## Pip Install
|
||||
|
||||
The recommended way to install the latest release is to use pip:
|
||||
The recommended way to install the latest release
|
||||
with all features is to use pipx:
|
||||
|
||||
```bash
|
||||
pipx install -U manim-slides
|
||||
pipx install -U "manim-slides[pyside6-full]"
|
||||
```
|
||||
|
||||
:::{tip}
|
||||
@ -52,6 +59,28 @@ like to upgrade to the latest version available,
|
||||
if Manim Slides is already installed.
|
||||
:::
|
||||
|
||||
:::{note}
|
||||
The quotes `"` are added because not all shell support unquoted
|
||||
brackets (e.g., zsh) or commas (e.g., Windows).
|
||||
:::
|
||||
|
||||
You can check that Manim Slides was correctly installed with:
|
||||
|
||||
```bash
|
||||
manim-slides --version
|
||||
```
|
||||
|
||||
## Custom install
|
||||
|
||||
If you want more control on what dependencies are installed,
|
||||
you can always install the bare minimal dependencies with:
|
||||
|
||||
```bash
|
||||
pipx install -U manim-slides
|
||||
```
|
||||
|
||||
And install additional dependencies later.
|
||||
|
||||
Optionally, you can also install Manim or ManimGL using extras[^1]:
|
||||
|
||||
```bash
|
||||
@ -60,11 +89,8 @@ pipx install -U "manim-slides[manim]" # For Manim
|
||||
pipx install -U "manim-slides[manimgl]" # For ManimGL
|
||||
```
|
||||
|
||||
You can check that Manim Slides was correctly installed with:
|
||||
|
||||
```bash
|
||||
manim-slides --version
|
||||
```
|
||||
For optional dependencies documentation, see
|
||||
[next section](#optional-dependencies).
|
||||
|
||||
:::{warning}
|
||||
If you are installing with pipx, this is mandatory to at least include
|
||||
@ -74,20 +100,30 @@ either `manim` or `manimgl`.
|
||||
[^1]: You still need to have Manim or ManimGL platform-specific dependencies
|
||||
installed on your computer.
|
||||
|
||||
## Optional Dependencies
|
||||
## Optional dependencies
|
||||
|
||||
Along with the optional dependencies for Manim and ManimGL,
|
||||
Manim Slides offers additional *extras*, that can be activated
|
||||
using optional dependencies:
|
||||
|
||||
- `full`, to include `magic`, `manim`, `manimgl`, and
|
||||
`sphinx-directive` extras (see below);
|
||||
- `magic`, to include a Jupyter magic to render
|
||||
animations inside notebooks. This automatically installs `manim`,
|
||||
and does not work with ManimGL;
|
||||
- `manim` and `manimgl`, for installing the corresponding
|
||||
dependencies;
|
||||
- `pyqt6` to include PyQt6 Qt bindings. Those bindings are available
|
||||
on most platforms and Python version, but produce a weird black
|
||||
screen between slide with `manim-slides present`,
|
||||
see [#QTBUG-118501](https://bugreports.qt.io/browse/QTBUG-118501);
|
||||
- `pyqt6-full` to include `full` and `pyqt6`;
|
||||
- `pyside6` to include PySide6 Qt bindings. Those bindings are available
|
||||
on most platforms and Python version, except on Python 3.12[^2];
|
||||
- `pyside6-full` to include `full` and `pyside6`;
|
||||
- `sphinx-directive`, to generate presentation inside your Sphinx
|
||||
documentation. This automatically installs `manim`,
|
||||
and does not work with ManimGL;
|
||||
and does not work with ManimGL.
|
||||
|
||||
Installing those extras can be done with the following syntax:
|
||||
|
||||
@ -95,14 +131,27 @@ Installing those extras can be done with the following syntax:
|
||||
pipx install -U "manim-slides[extra1,extra2]"
|
||||
```
|
||||
|
||||
:::{note}
|
||||
The quotes `"` are added because not all shell support unquoted
|
||||
brackets (e.g., zsh) or commas (e.g., Windows).
|
||||
:::
|
||||
[^2]: Actually, PySide6 can be installed on Python 3.12, but you will then
|
||||
observe the same visual bug as with PyQt6.
|
||||
|
||||
## Install From Repository
|
||||
## When you need a Qt backend
|
||||
|
||||
Before `v5.1`, Manim Slides automatically included PySide6 as
|
||||
a Qt backend. As only `manim-slides present` and `manim-slides wizard`
|
||||
command need a graphical library, and installing PySide6 on all platforms
|
||||
and Python version can be sometimes complicated, Manim Slides chooses
|
||||
**not to include** any Qt backend.
|
||||
|
||||
The use can choose between PySide6 (best) and PyQt6, depending on their
|
||||
availability and licensing rules.
|
||||
|
||||
As of `v5.1`, you **need** to have Qt bindings installed to use
|
||||
`manim-slides present` or `manim-slides wizard`. The recommended way to
|
||||
install those are via optional dependencies, as explained above.
|
||||
|
||||
## Install from source
|
||||
|
||||
An alternative way to install Manim Slides is to clone the git repository,
|
||||
and install from there: read the
|
||||
and build the package from source. Read the
|
||||
[contributing guide](./contributing/workflow)
|
||||
to know how to process.
|
||||
|
@ -10,6 +10,19 @@ see [installation](./installation).
|
||||
:end-before: <!-- end usage -->
|
||||
```
|
||||
|
||||
:::{note}
|
||||
Using `manim-slides render` makes sure to use the `manim`
|
||||
(or `manimlib`) library that was installed in the same Python environment.
|
||||
Put simply, this is a wrapper around
|
||||
`manim render [ARGS]...` (or `manimgl [ARGS]...`).
|
||||
:::
|
||||
|
||||
|
||||
```{include} ../../README.md
|
||||
:start-after: <!-- start more-usage -->
|
||||
:end-before: <!-- end more-usage -->
|
||||
```
|
||||
|
||||
The output slides should look this this:
|
||||
|
||||
```{eval-rst}
|
||||
|
Reference in New Issue
Block a user