diff --git a/.gitignore b/.gitignore index 58b98b8..a477542 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ rendered particles_* sim_* *.bin +/build diff --git a/blender/__init__.py b/blender/__init__.py index 7df46cf..33e1287 100644 --- a/blender/__init__.py +++ b/blender/__init__.py @@ -24,12 +24,35 @@ pass if use_blender: - from . import addon + import sys + import os - def register(): - addon.register() + bundle_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'bundle') - def unregister(): - addon.unregister() + if os.path.exists(bundle_path): + def register(): + print('Found Taichi-Elements/bundle at', bundle_path) + if bundle_path not in sys.path: + sys.path.insert(0, bundle_path) + # import addon after path is inserted, so that `import taichi` works + from . import addon + addon.register() + + def unregister(): + from . import addon + addon.unregister() + if bundle_path in sys.path: + sys.path.remove(bundle_path) + + else: + print('Cannot find Taichi-Elements/bundle, assuming PyPI installation.') + + from . import addon + + def register(): + addon.register() + + def unregister(): + addon.unregister() # Otherwise act as a PyPI package diff --git a/blender/requirements.txt b/blender/requirements.txt new file mode 100644 index 0000000..982ec02 --- /dev/null +++ b/blender/requirements.txt @@ -0,0 +1,6 @@ +astor +colorama +dill +pybind11>=2.5.0 +sourceinspect>=0.0.3 +taichi diff --git a/make_bundle.sh b/make_bundle.sh new file mode 100644 index 0000000..67185b3 --- /dev/null +++ b/make_bundle.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e +rm -rf build/Taichi-Elements +mkdir -p build/Taichi-Elements/bundle +python3 -m pip install --no-deps -r blender/requirements.txt -t build/Taichi-Elements/bundle +cp -r blender/* build/Taichi-Elements +cp -r engine build/Taichi-Elements +rm -rf build/Taichi-Elements/bundle/include +rm -rf build/Taichi-Elements/bundle/*.dist-info +rm -rf build/Taichi-Elements/bundle/bin +rm -f build/Taichi-Elements.zip +cd build && zip -r Taichi-Elements.zip Taichi-Elements