We're trying to install htoa-6.0.1.0_rb2fc4a5_houdini-19.0.383.py3_windows through a package on our server. If I use a mount point in the path it works fine but if I instead try it with a UNC path it loads but spits out a bunch of python errors.
Works: "PATH": "z:/_pipeline/_bin/houdini/htoa/6.0.1.0_19.0.383/plugin/scripts/bin"
Fails: "PATH": "//fs/data/_pipeline/_bin/houdini/htoa/6.0.1.0_19.0.383/plugin/scripts/bin"
Error:
Traceback (most recent call last): File "C:/PROGRA~1/SIDEEF~1/HOUDIN~1.383/houdini/python3.7libs\hdefereval.py", line 155, in _processDeferred result = code(*args, **kwargs) File "//fs/data/_pipeline/_bin/houdini/htoa/6.0.1.0_19.0.383/plugin/scripts/python\htoa\dialog.py", line 59, in python_check py_build_version = [int(x) for x in pyVersion().split('.')] File "//fs/data/_pipeline/_bin/houdini/htoa/6.0.1.0_19.0.383/plugin/scripts/python\htoa\dialog.py", line 16, in pyVersion htoa.op_dso.pyVersion.restype = ctypes.c_void_p AttributeError: 'NoneType' object has no attribute 'pyVersion'
op_dso is NoneType?
The Python that sets op_dso worked ok when I used your path (it printed out the right path for me).
Can you try running this in a Python shell (with the UNC path):
import htoa import os import platform folder = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(htoa.__file__)))) dso_prefix = 'htoa_' _libext = {'windows' :'.dll', 'microsoft':'.dll', 'linux' :'.so', 'darwin' :'.dylib'} print( os.path.join(folder, 'dso', dso_prefix + 'core' + _libext[platform.system().lower()]) )
A UNC path worked for me on Windows
Hey Stephen,
Thanks for the quick response. Quite annoying that you can't reproduce it on your end as that makes it a bit tougher to figure out, but also probably means that it's just a user error from my side.
So I started houdini with arnold loading from our server via a UNC path and got the same weird python error. I then ran you code snippet in a python shell and it printed the path fine.
But if I then try to just hit render on an arnold rop exporting a simple grid to a standin I get the funky error below so something get's really wonky when I try to load arnold via the UNC path.
Here are the two package json files I'm trying as well as the print out in the console at launch, as I might have screwed something else up. htoa_json.zip htoa_log.txt
Failed to save output to file "Traceback (most recent call last): File "//fs/data/_pipeline/_bin/houdini/htoa/6.0.1.0_19.0.383/plugin/soho/arnold.py", line 13, in <module> from htoa.session import HaSession File "C:\PROGRA~1\SIDEEF~1\HOUDIN~1.383\python37\lib\site-packages-forced\shiboken2\files.dir\shibokensupport\__feature__.py", line 142, in _import return original_import(name, *args, **kwargs) File "//fs/data/_pipeline/_bin/houdini/htoa/6.0.1.0_19.0.383/plugin/scripts/python\htoa\session.py", line 64, in <module> ass_prefix = assPrefix() File "//fs/data/_pipeline/_bin/houdini/htoa/6.0.1.0_19.0.383/plugin/scripts/python\htoa\session.py", line 55, in assPrefix res = htoa.op_dso.assPrefix() AttributeError: 'NoneType' object has no attribute 'assPrefix' ".
The console log looks ok, until the error at the end. Which is still op_dso being NoneType
Can you run this Python snippet. This time I included the part that tries to load the dso
import htoa import os import platform import ctypes folder = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(htoa.__file__)))) dso_prefix = 'htoa_xx' _libext = {'windows' :'.dll', 'microsoft':'.dll', 'linux' :'.so', 'darwin' :'.dylib'} op_dso = ctypes.CDLL( os.path.join(folder, 'dso', dso_prefix + 'core' + _libext[platform.system().lower()]) )
If I run your snippet as is I get the below error, but if I modify it to dso_prefix = 'hota_' it runs without any issues. Capture.JPG
Traceback (most recent call last): File "<console>", line 1, in <module> File "C:\PROGRA~1\SIDEEF~1\HOUDIN~1.383\python37\lib\ctypes\__init__.py", line 364, in __init__ self._handle = _dlopen(self._name, mode) OSError: [WinError 126] The specified module could not be found
So, it works. But somehow it doesn't work when run as part of the module.