Trying to use command line but getting a .dll error.
4591
4
1
hou_person
Member
15 posts
Joined: 8月 2017
Offline
2017年8月17日 20:24
I'm trying to access the hou module for command line (windows) Regular Python Shell (python 2.7)
The sideFX doc [
www.sidefx.com ] But when I append my env variable ('C:\Program Files\Side Effects Software\Houdini 16.0.671\houdini\python2.7libs') and append it also to my sys path in the python shell I get a:
File "C:\Program Files\Side Effects Software\Houdini 16.0.671\houdini\python2.7libs\hou.py" , line 19 , in < module >
import _hou
ImportError : DLL load failed : The specified module could not be found .
In my libs folder I don't have a ‘_hou.py’ I only have ‘_hou.pyd’
After trying to figure it out myself I am unable to get this working, anyone have a suggestion for me?
Edited by hou_person - 2017年8月17日 20:25:12
hou_person
Member
15 posts
Joined: 8月 2017
Offline
2017年8月23日 13:00
Hey guys, hate to be that guy but only 30 people viewed it, and I am still lost. One bump for good luck.
NFX
Member
183 posts
Joined: 12月 2011
Offline
2018年3月22日 18:28
Having this issue with H16 on windows. Tried using the dlopen_flags from the documentation and still no luck. Anyone figure this out?
2019年3月26日 1:41
I'm trying to do this as well in Houdini 17.5/Windows 10 and i'm getting the same error.
Here's a workaround which will find hython and re-run the script there:
import os, sys def _locate_houdini(): import os from _winreg import ConnectRegistry, OpenKey, CloseKey, EnumKey, EnumValue, QueryValue, HKEY_LOCAL_MACHINE install_path = None abort = False while install_path is None and not abort: try: registry = ConnectRegistry(None, HKEY_LOCAL_MACHINE) key_path = 'SOFTWARE\\Side Effects Software\\' key = OpenKey(registry, key_path) i = 0 while install_path is None: sub_key = EnumKey(key, i) i += 1 if sub_key == 'Houdini' or sub_key == 'Houdini Engine': sub_key = OpenKey(key, sub_key) install_path = EnumValue(sub_key, 0)[1] if not os.path.exists(install_path): install_path = None CloseKey(sub_key) CloseKey(key) except: pass return install_path def _locate_hython(): houdini_path = _locate_houdini() hython_path = houdini_path + 'bin\\hython2.7.exe' assert os.path.exists(hython_path), 'hython not found!' return hython_path def _bootstrap(argv): import subprocess hython_path = _locate_hython() subprocess.call([hython_path, __file__] + argv) # We're running in hython def execute(argv): import hou print 'hello in hython' print argv def main(argv): try: import hou execute(argv) except: _bootstrap(argv) if __name__ == '__main__': main(sys.argv[1:])
Edited by George Rolfe - 2019年3月26日 01:59:28
dpotuznik
Member
11 posts
Joined: 4月 2019
Offline
2021年8月9日 11:45
George Rolfe import os, sys def _locate_houdini(): import os from _winreg import ConnectRegistry, OpenKey, CloseKey, EnumKey, EnumValue, QueryValue, HKEY_LOCAL_MACHINE install_path = None abort = False while install_path is None and not abort: try: registry = ConnectRegistry(None, HKEY_LOCAL_MACHINE) key_path = 'SOFTWARE\\Side Effects Software\\' key = OpenKey(registry, key_path) i = 0 while install_path is None: sub_key = EnumKey(key, i) i += 1 if sub_key == 'Houdini' or sub_key == 'Houdini Engine': sub_key = OpenKey(key, sub_key) install_path = EnumValue(sub_key, 0) if not os.path.exists(install_path): install_path = None CloseKey(sub_key) CloseKey(key) except: pass return install_path def _locate_hython(): houdini_path = _locate_houdini() hython_path = houdini_path + 'bin\\hython2.7.exe' assert os.path.exists(hython_path), 'hython not found!' return hython_path def _bootstrap(argv): import subprocess hython_path = _locate_hython() subprocess.call( + argv) # We're running in hython def execute(argv): import hou print 'hello in hython' print argv def main(argv): try: import hou execute(argv) except: _bootstrap(argv) if __name__ == '__main__': main(sys.argv)Thank you for that