Trying to use command line but getting a .dll error.

   4614   4   1
User Avatar
Member
15 posts
Joined: Aug. 2017
Offline
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 - Aug. 17, 2017 20:25:12
User Avatar
Member
15 posts
Joined: Aug. 2017
Offline
Hey guys, hate to be that guy but only 30 people viewed it, and I am still lost.
One bump for good luck.
User Avatar
Member
183 posts
Joined: Dec. 2011
Offline
Having this issue with H16 on windows. Tried using the dlopen_flags from the documentation and still no luck. Anyone figure this out?
User Avatar
Member
2 posts
Joined: March 2016
Online
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 - March 26, 2019 01:59:28
User Avatar
Member
11 posts
Joined: April 2019
Offline
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
  • Quick Links