From 01fa71a70477907dd9c000ad72859b12d0b3a1fa Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Sun, 28 Apr 2019 07:18:40 +0200 Subject: [PATCH 1/2] Prefer pwd to install dir for temp files Temp files are project specific and thus can stay in the current project directory. Also breaks things if the package is installed in a read-only location. Which could be expected because you don't generally expect the program directories to be modified (except by the package manager). --- manimlib/constants.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manimlib/constants.py b/manimlib/constants.py index 375e6e76..9be21e2a 100644 --- a/manimlib/constants.py +++ b/manimlib/constants.py @@ -14,7 +14,7 @@ else: "Dropbox (3Blue1Brown)/3Blue1Brown Team Folder" ) if not os.path.isdir(MEDIA_DIR): - MEDIA_DIR = "media" + MEDIA_DIR = "./media" print( f"Media will be stored in {MEDIA_DIR + os.sep}. You can change " "this behavior by writing a different directory to media_dir.txt." @@ -26,7 +26,7 @@ SVG_IMAGE_DIR = os.path.join(MEDIA_DIR, "designs", "svg_images") SOUND_DIR = os.path.join(MEDIA_DIR, "designs", "sounds") ### THIS_DIR = os.path.dirname(os.path.realpath(__file__)) -FILE_DIR = os.path.join(os.getenv("FILE_DIR", default=THIS_DIR), "files") +FILE_DIR = os.path.join(os.getenv("FILE_DIR", default="."), "files") TEX_DIR = os.path.join(FILE_DIR, "Tex") # These two may be depricated now. MOBJECT_DIR = os.path.join(FILE_DIR, "mobjects") From 2a6918cc30336544856a68f065a21ba2b769b01c Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Sun, 28 Apr 2019 07:17:15 +0200 Subject: [PATCH 2/2] Make manim installable using setuptools (setup.py) Now you an install it into the system packages and use it outside the source code directory. --- README.md | 23 ++++++++++++++++++----- setup.py | 25 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 setup.py diff --git a/README.md b/README.md index fd204cc2..5ac0ba17 100644 --- a/README.md +++ b/README.md @@ -5,19 +5,32 @@ Manim is an animation engine for explanatory math videos. It's used to create precise animations programmatically, as seen in the videos at [3Blue1Brown](https://www.3blue1brown.com/). ## Installation -Manim runs on python 3.7. You can install the python requirements with +Manim runs on python 3.7. You can install the Python requirements with `python3 -m pip install -r requirements.txt`. System requirements are -[cairo](https://www.cairographics.org), [latex](https://www.latex-project.org), -[ffmpeg](https://www.ffmpeg.org), and [sox](http://sox.sourceforge.net). +[cairo](https://www.cairographics.org), [ffmpeg](https://www.ffmpeg.org), [sox](http://sox.sourceforge.net), [latex](https://www.latex-project.org) (optional, if you want to use LaTeX). ### Directly +Clone this repository and in that directory execute: ```sh -git clone https://github.com/3b1b/manim.git -cd manim +# Install python requirements python3 -m pip install -r requirements.txt + +# Try it out python3 -m manim example_scenes.py SquareToCircle -pl ``` +### Installing into your system +For the previous "direct" method you always have to have this git repository. alternatively you can install it permanently in your system and run it on your own scene files: + +```sh +# Inside repository - Install manim (also installs Python requirements) +python3 -m pip install . + +# Now you don't need the repository anymore and can run it in other directories +cd anywhere +manim.py example_scenes.py SquareToCircle -pl +``` + ### Directly (Windows) 1. [Install FFmpeg](https://www.wikihow.com/Install-FFmpeg-on-Windows). 2. Install Cairo. Download the wheel from https://www.lfd.uci.edu/~gohlke/pythonlibs/#pycairo. For most users, ``pycairo‑1.18.0‑cp37‑cp37m‑win32.whl`` will do fine. diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..4027b660 --- /dev/null +++ b/setup.py @@ -0,0 +1,25 @@ +from setuptools import setup, find_namespace_packages + + +setup(name='manim', + version='0.1.0', + description='Animation engine for explanatory math videos', + author='Grant Sanderson', + author_email='grant@3blue1brown.com', + url='https://github.com/3b1b/manim', + license='MIT', + packages=find_namespace_packages(), + install_requires=[ + 'colour', + 'numpy', + 'Pillow', + 'progressbar', + 'scipy', + 'tqdm', + 'opencv-python', + 'pycairo', + 'pydub', + ], + scripts=['manim.py', 'stage_scenes.py', 'big_ol_pile_of_manim_imports.py'], + package_data={'manimlib': ['*.tex', 'files/**']}, +)