2 min read

Updating an old conda for Manim

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: conda=22.11.0 requires 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.