diff --git a/render_povray/render.py b/render_povray/render.py index 3ac7b48c57acbfaac1af60e5fef0fd7e0b945e2f..cfdfddf99d64de48d6f84519ddbb2d28e0b4680a 100644 --- a/render_povray/render.py +++ b/render_povray/render.py @@ -1707,10 +1707,37 @@ class PovrayRender(bpy.types.RenderEngine): # DH - added -d option to prevent render window popup which leads to segfault on linux extra_args.append("-d") - # TODO, when POV-Ray isn't found this can probably still give a cryptic error on linux, - # would be nice to be able to detect if it exists + isExists = False + sysPathList = os.getenv("PATH").split(':') + sysPathList.append("") - print("Command line arguments passed: " + str(extra_args)) + for dirName in sysPathList: + if (os.path.exists(os.path.join(dirName, pov_binary))): + isExists = True + break + + if not isExists: + print("POV-Ray 3.7: could not found execute '%s' - not if PATH" % pov_binary) + import traceback + traceback.print_exc() + print ("***-DONE-***") + return False + + try: + self._process = subprocess.Popen([pov_binary, self._temp_file_ini] + extra_args) + + except OSError: + # TODO, report api + print("POV-Ray 3.7: could not execute '%s'" % pov_binary) + import traceback + traceback.print_exc() + print ("***-DONE-***") + return False + + else: + print("POV-Ray 3.7 found") + print("Command line arguments passed: " + str(extra_args)) + return True def _cleanup(self): for f in (self._temp_file_in, self._temp_file_ini, self._temp_file_out):