I wanted to use Manim for something recently. The easiest way as far as I could tell was to use Conda, so I tried to do that. Unfortunately, I ran into an error, probably because my conda version is old. Naturally, I tried to update it.
It turns out that because the Python version is fixed, you will eventually be unable to update your Conda install. My base environment had
python=3.6 due to installing Miniconda a while back (maybe 2017, maybe 2020).
conda was prompting me to update, but
conda update -n base -c defaults conda wouldn't actually install the update – it would say that all packages are up to date, and issue the same old warning telling me to run the command I just ran. Like this:
PS$ conda update -n base -c defaults conda Collecting package metadata (current_repodata.json): done Solving environment: done ==> WARNING: A newer version of conda exists. <== current version: 4.10.3 latest version: 22.11.0 Please update conda by running $ conda update -n base -c defaults conda # All requested packages already installed.
To fix this, I tried a few gentle fixes, but none worked. I tried removing/updating packages that were causing the environment to be inconsistent; doing that fixed some errors but didn't fix the updating. I tried
conda update --all, and that didn't help. I tried
conda install -c defaults -n base conda=22.11.0 and that didn't work, but it did give useful information:
python>=3.7. Python 3.6 isn't supported. So finally I tried
conda install python=3.7. This didn't work, but got the farthest of any solution. It succeeded in installing most packages but ran into a problem with
sphinx and had to roll back the changes.
Finally I decided to just reinstall Miniconda. This took about an hour and finally fixed the problem.
So I got to mess with Manim. I made a thing:
This was originally intended for a post, but I ran out of steam on it just trying to get conda to work, so that post will probably never exist. Oh well. Maybe I'll use Manim for something else.
One quirk of the API that I ran into:
Triangle() is not actually what you want if you want a triangle. It is specifically an equilateral triangle. If you need a non-regular triangle, you'll want
Polygon(). The other quirk is that
Polygon expects you to pass vertices with 3 coordinates, not 2. It's unclear to me yet what this third coordinate is for. I'd guess it's for 3D visualizations, but who knows. That implies that Manim can handle perspective by default, which is interesting if true.