prman-pixar / RenderManForBlender

RenderMan for Blender render addon
MIT License
809 stars 133 forks source link

Prman for Python is not defined #576

Closed dpastorv closed 3 years ago

dpastorv commented 6 years ago

I've got this weird error. No issues at install, but no preview as shown.

image

Also if I try to render on the preview it displays like this. image

and when I try to render in IPR i got this image

in the console the error displays like this. Exception ignored in: <bound method RPass.del of <RenderManForBlender-master.engine.RPass object at 0x0000020AEA51F630>> Traceback (most recent call last): File "C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\RenderManForBlender-master\engine.py", line 220, in del del self.ri AttributeError: ri Exception ignored in: <bound method PRManRender.del of <bpy_struct, PRManRender invalid>> Traceback (most recent call last): File "C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\RenderManForBlender-master__init.py", line 51, in del if hasattr(self, "render_pass"): ReferenceError: StructRNA of type PRManRender has been removed Traceback (most recent call last): File "C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\RenderManForBlender-master__init__.py", line 61, in update engine.create(self, data, scene) File "C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\RenderManForBlender-master\engine.py", line 104, in create engine.render_pass = RPass(scene, preview_render=engine.is_preview) File "C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\RenderManForBlender-master\engine.py", line 204, in init__ init_prman() File "C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\RenderManForBlender-master\engine.py", line 79, in init_prman import prman File "C:\Program Files\Pixar\RenderManProServer-21.7\bin\prman.py", line 102, in class Rif(prman_for_python.Rif): NameError: name 'prman_for_python' is not defined

location: :-1

davideo commented 6 years ago

I would like to know the answer to this question as well as I am getting the same behavior since I installed Renderman 21.7 on Blender 2.79b on Linux Mint 18. Usually, I can shoot down these errors myself but this one has proved intractable for me. Thanks for any guidance!

jdent02 commented 6 years ago

Something is going wrong with the import of the Renderman Python module from the look of it.

minerscale commented 6 years ago

I'm having the same issue on Ubuntu 17.10 Renderman 21.7 and Blender 2.78

minerscale commented 6 years ago

I have found a possible root cause of the issue, I believe blender is attempting to run prman.py in python 3 instead of 2.5. When running prman.py in python 2 no error occurs and when it is run in python 3 it returns: Traceback (most recent call last): File "prman.py", line 102, in <module> class Rif(prman_for_python.Rif): NameError: name 'prman_for_python' is not defined

EDIT: Can confirm that this is the problem. I added a debug command into prman.py to output what version of python ran it and it was being run with python 3.6.

jdent02 commented 6 years ago

Blender uses python 3.5 so it can’t be run in 2.7 from within blender. Blenders been on python 3 for a while so it’s unusual that prman would work for this long and then all of a sudden develop issues

minerscale commented 6 years ago

PRMan for Python itself says it only supports 2.5: https://renderman.pixar.com/resources/RenderMan_20/prmanForPython.html#caveats-limitations-future-directions

jdent02 commented 6 years ago

At the time that article was written (April 2009) that was true, but Python 3 bindings were added later on. You can’t run a Python 2.7 module in Blender. It requires Python 3, which is one of the reasons why the VFX industry still avoids Blender to some extent. Most of them are still using Python 2.7 for their pipelines.

adminradio commented 6 years ago

Reinstall the addon without any spaces or hyphens in the addon directory name (remove "-master" from directory name. Then it should run.

schroef commented 6 years ago

Reinstall the addon without any spaces or hyphens in the addon directory name (remove "-master" from directory name. Then it should run.

I tried that and still see the error, i see these error when doing render using blender

Traceback (most recent call last):
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/__init__.py", line 64, in update
    engine.create(self, data, scene)
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 104, in create
    engine.render_pass = RPass(scene, preview_render=engine.is_preview)
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 204, in __init__
    init_prman()
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 79, in init_prman
    import prman
  File "/Applications/Pixar/RenderManProServer-22.2/bin/prman.py", line 80, in <module>
    import prman_for_python_35 as prman_for_python
ImportError: dlopen(/Applications/Pixar/RenderManProServer-22.2/bin/prman_for_python_35.so, 2): Library not loaded: /Library/Frameworks/Python.framework/Versions/3.5/Python
  Referenced from: /Applications/Pixar/RenderManProServer-22.2/bin/prman_for_python_35.so
  Reason: image not found

This is the output for IPR render using blender

Exception ignored in: <bound method RPass.__del__ of <RenderManForBlender.engine.RPass object at 0x11bcd86a0>>
Traceback (most recent call last):
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 220, in __del__
    del self.ri
AttributeError: ri
Exception ignored in: <bound method PRManRender.__del__ of <bpy_struct, PRManRender invalid>>
Traceback (most recent call last):
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/__init__.py", line 51, in __del__
    if hasattr(self, "render_pass"):
ReferenceError: StructRNA of type PRManRender has been removed
Traceback (most recent call last):
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/operators.py", line 492, in invoke
    engine.ipr = RPass(context.scene, interactive=True)
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 204, in __init__
    init_prman()
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 79, in init_prman
    import prman
  File "/Applications/Pixar/RenderManProServer-22.2/bin/prman.py", line 80, in <module>
    import prman_for_python_35 as prman_for_python
ImportError: dlopen(/Applications/Pixar/RenderManProServer-22.2/bin/prman_for_python_35.so, 2): Library not loaded: /Library/Frameworks/Python.framework/Versions/3.5/Python
  Referenced from: /Applications/Pixar/RenderManProServer-22.2/bin/prman_for_python_35.so
  Reason: image not found

This is when i tried using TR for render to

Exception ignored in: <bound method RPass.__del__ of <RenderManForBlender.engine.RPass object at 0x11bce5e80>>
Traceback (most recent call last):
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 217, in __del__
    if self.is_interactive and self.is_prman_running():
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 561, in is_prman_running
    return prman.RicGetProgress() < 100
NameError: name 'prman' is not defined
Traceback (most recent call last):
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/operators.py", line 492, in invoke
    engine.ipr = RPass(context.scene, interactive=True)
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 204, in __init__
    init_prman()
  File "/Users/romboutversluijs/Library/Application Support/Blender/2.78/scripts/addons/RenderManForBlender/engine.py", line 79, in init_prman
    import prman
  File "/Applications/Pixar/RenderManProServer-22.2/bin/prman.py", line 80, in <module>
    import prman_for_python_35 as prman_for_python
ImportError: dlopen(/Applications/Pixar/RenderManProServer-22.2/bin/prman_for_python_35.so, 2): Library not loaded: /Library/Frameworks/Python.framework/Versions/3.5/Python
  Referenced from: /Applications/Pixar/RenderManProServer-22.2/bin/prman_for_python_35.so
  Reason: image not found

Im tried both bl 2.78c and 2.79b on osx 10.11.6

schroef commented 6 years ago

Blender uses python 3.5 so it can’t be run in 2.7 from within blender. Blenders been on python 3 for a while so it’s unusual that prman would work for this long and then all of a sudden develop issues

Im just new to this renderman, but i did see this on a page. Though that was 21, 22 states the same, see here

screen shot 2018-11-18 at 19 03 56

Though on that other page something else is stated indeed https://renderman.pixar.com/resources/RenderMan_20/prmanForPython.html#caveats-limitations-future-directions

screen shot 2018-11-18 at 19 04 24
jdent02 commented 6 years ago

It works with 3.5 as it launches with blender 2.79b

schroef commented 6 years ago

I did notice just now that it also doesnt seem to find the python lib in the frameworks folder. There is no 3.5 in that folder only 3.4 and 3.6?

That is at the bottom of the error

ImportError: dlopen(/Applications/Pixar/RenderManProServer-22.2/bin/prman_for_python_35.so, 2): Library not loaded: /Library/Frameworks/Python.framework/Versions/3.5/Python
  Referenced from: /Applications/Pixar/RenderManProServer-22.2/bin/prman_for_python_35.so
  Reason: image not found
screen shot 2018-11-18 at 19 36 47

There is a 3.5 python lib but that is inside blender app. Not in the frameworks path

screen shot 2018-11-18 at 19 38 54

EDIT Okay i installed python 3.5.4 and now some did happen. Though it results in an instant crash it a step further i guess. Anyone familiar with this crash? Ill try to look at this repo and see if i can find something related.

Writing: /tmp/cornell-box-TutorialFinished.crash.txt
Segmentation fault: 11
logout
Saving session...

cornell-box-TutorialFinished.crash.txt

schroef commented 6 years ago

@jdent02 you probably are using a RenderMan prior to 22 than aren't you?

jdent02 commented 6 years ago

Yes, I held on to 21.7. Pixar hasn't approved any significant changes to this exporter since last year so I was pretty positive it wouldn't work with 22.

pleprince commented 6 years ago

One of our engineers started working on the new plugin but we don't have a release date yet. It is all hinging on the public availability of our new API...

schroef commented 6 years ago

Why not keep old api available by the way? I dont understand this is only available once you pay the license.

jdent02 commented 6 years ago

Because they don’t want to support previous non commercial versions. I can understand that from a business standpoint.

Sent from my iPhone

On Nov 20, 2018, at 5:47 PM, schroef notifications@github.com<mailto:notifications@github.com> wrote:

Why not keep old api available by the way? I dont understand this is only available once you pay the license.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/prman-pixar/RenderManForBlender/issues/576#issuecomment-440469994, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AM5RFJlYuc6iI8BN_7V81RppzfgJIOdBks5uxJSIgaJpZM4UJOpz.

schroef commented 6 years ago

You don't need to support old API, if you state that only latest new releases are supported. Thats how many other applications also handle it.