From 385d416e6c4e54b63aefec21180acb942a8d74a1 Mon Sep 17 00:00:00 2001 From: Swann Martinez Date: Thu, 9 May 2019 14:20:42 +0200 Subject: [PATCH] feat(general) : zmq auto config --- __init__.py | 17 +++++++++++++++++ client.py | 3 ++- message.py | 5 +++-- operators.py | 6 +++++- server.py | 4 +--- 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/__init__.py b/__init__.py index a86fbb1..19a2c1d 100644 --- a/__init__.py +++ b/__init__.py @@ -12,7 +12,24 @@ bl_info = { import bpy import os import sys +import subprocess +import bpy +import addon_utils +from pathlib import Path +python_path = Path(bpy.app.binary_path_python) +cwd_for_subprocesses = python_path.parent + +def get_package_install_directory(): + for path in sys.path: + if os.path.basename(path) in ("dist-packages", "site-packages"): + return path + +try: + import zmq +except: + target = get_package_install_directory() + subprocess.run([str(python_path), "-m", "pip", "install", "zmq", '--target', target], cwd=cwd_for_subprocesses) from . import operators from . import ui diff --git a/client.py b/client.py index 8caebe3..ad3bbe2 100644 --- a/client.py +++ b/client.py @@ -9,9 +9,10 @@ import threading import time from enum import Enum from random import randint +import zmq from . import draw, helpers, message -from .libs import dump_anything, umsgpack, zmq +from .libs import dump_anything, umsgpack # import zmq lock = threading.Lock() diff --git a/message.py b/message.py index e4dbc20..04879bd 100644 --- a/message.py +++ b/message.py @@ -1,11 +1,12 @@ import logging try: from .libs import umsgpack - from .libs import zmq + except: # Server import from libs import umsgpack - from libs import zmq + +import zmq logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) diff --git a/operators.py b/operators.py index ee61c4d..b288c22 100644 --- a/operators.py +++ b/operators.py @@ -15,6 +15,9 @@ import gpu import mathutils from bpy_extras import view3d_utils from gpu_extras.batch import batch_for_shader +from pathlib import Path + +python_path = Path(bpy.app.binary_path_python) from . import client, draw, helpers, ui from .libs import umsgpack @@ -299,8 +302,9 @@ class session_create(bpy.types.Operator): global client_instance net_settings = context.scene.session_settings + print(python_path) server = subprocess.Popen( - ['python', 'server.py'], shell=False, stdout=subprocess.PIPE) + [str(python_path), 'server.py'], shell=False, stdout=subprocess.PIPE) # time.sleep(0.1) bpy.ops.session.join() diff --git a/server.py b/server.py index a167701..06b7539 100644 --- a/server.py +++ b/server.py @@ -2,10 +2,8 @@ import logging import time from operator import itemgetter -from libs import zmq - - +import zmq import message logger = logging.getLogger("Server") logging.basicConfig(level=logging.DEBUG)