Houdiniで最初から使えるPythonのモジュールってどれだけあるの？

どうも、ゲームエフェクト屋です。

Houdiniで普通にインストールしただけの状態でPythonからどれくらいの
モジュールが利用可能なのかふと気になって少し調べました。

Pythonでは利用可能なモジュールの一覧を`help('modules')`で取得出来ます。
Houdini17.5.378(Windows)のメインメニューの **Windows** から **Python Shell** を起動して上記コマンドを実行するとこれだけのモジュールが出てきます。

```
Python 2.7.15 (default, Apr  8 2019, 15:38:59) [MSC v.1916 64 bit (AMD64)] on win32
Houdini 17.5.378 hou module imported.
Type "help", "copyright", "credits" or "license" for more information.
>>> help('modules')

Please wait a moment while I gather a list of all available modules...

No handlers could be found for logger "OpenGL.Tk"
BaseHTTPServer      codecs              itertools           repr
Bastion             codeop              itsdangerous        requests
CGIHTTPServer       collections         jinja2              rexec
Canvas              colorschemeutils    json                rfc822
ConfigParser        colorsys            karmautils          rigtoolutils
Cookie              commands            keyword             rlcompleter
Crypto              compileall          layermuting         rmands
Dialog              compiler            lib2to3             robotparser
DocXMLRPCServer     contextlib          lightpanel          roptoolutils
EC2                 contextoptionseditor linecache           rpyc
FileDialog          cookielib           loadHelpcardOTLExample runpy
FixTk               cop2toolutils       locale              sas
HTMLParser          copnettoolutils     logging             scenegraphdetails
HelpCard            copy                loptoolutils        sched
MimeWriter          copy_reg            loputils            sdl2otl
OpenGL              crowds              lxml                select
PIL                 crowdstoolutils     macpath             sets
PySide2             csv                 macurl2path         setuptools
Queue               ctypes              mailbox             sgmllib
ScrolledText        curl                mailcap             sha
SimpleDialog        curses              mako                shadingutils
SimpleHTTPServer    datetime            markupbase          shelfutils
SimpleXMLRPCServer  dbg                 markupsafe          shelve
SocketServer        dbhash              marshal             shlex
StringIO            decimal             math                shopclerks
Tix                 defaultstatetools   md5                 shoptoolutils
Tkconstants         defaulttoolmenus    metaexpr            shutil
Tkdnd               defaulttools        mhlib               sidefx_bend
Tkinter             demjson             mimetools           sidefx_lop_edit
UserDict            difflib             mimetypes           sidefx_lop_stagemanager
UserList            digitalassetsupport mimify              sidefx_stroke
UserString          dircache            mmap                signal
_LWPCookieJar       dis                 modulefinder        simplejson
_MozillaCookieJar   displaymessage      msilib              simtracker
__builtin__         distutils           mssbuild            site
__future__          doctest             msvcrt              six
_abcoll             dopclothproxy       multifile           skytoolutils
_ast                dopclothtoolutils   multiprocessing     slo2otl
_bisect             dopfetoolutils      muscletoolutils     smtpd
_bsddb              dopgeofiltertoolutils mutex               smtplib
_codecs             dopinstance         mvexportutils       sndhdr
_codecs_cn          dopparticlefluidtoolutils netrc               snippetmenu
_codecs_hk          doppoptoolutils     new                 socket
_codecs_iso2022     doppyrotoolutils    nntplib             soptoolutils
_codecs_jp          doprbdtoolutils     nodegraph           soputils
_codecs_kr          dopreltoolutils     nodegraphalign      sqlite3
_codecs_tw          dopsbdtoolutils     nodegraphautoscroll sre
_collections        dopsmoketoolutils   nodegraphbase       sre_compile
_csv                dopstatictoolutils  nodegraphconnect    sre_constants
_ctypes             doptoolutils        nodegraphdisplay    sre_parse
_elementtree        dopwiretoolutils    nodegraphdispopts   ssl
_functools          dragdroputils       nodegraphedittext   stagemanager
_hashlib            drivertoolutils     nodegraphfastfind   stat
_heapq              ds2hda              nodegraphflags      stateutils
_hotshot            dumbdbm             nodegraphfurutils   statvfs
_hou                dummy_thread        nodegraphgestures   string
_io                 dummy_threading     nodegraphhooks      stringold
_json               easy_install        nodegraphhotkeys    stringprep
_locale             ecdsa               nodegraphinfo       stroketoolutils
_lsprof             email               nodegraphlayout     strop
_md5                encodings           nodegraphpalettes   struct
_multibytecodec     ensurepip           nodegraphpopupmenus subprocess
_multiprocessing    errno               nodegraphprefs      sunau
_osx_support        exceptions          nodegraphrename     sunaudio
_pdg                expression_functions nodegraphselectpos  symbol
_pyio               expressionmenu      nodegraphselectposhooks symtable
_random             filecmp             nodegraphsnap       sys
_sha                fileinput           nodegraphstates     sysconfig
_sha256             fileutils           nodegraphtitle      tabnanny
_sha512             finddeprecated      nodegraphtopui      tarfile
_socket             flask               nodegraphui         taskgraphtable
_sqlite3            flask_script        nodegraphutils      telnetlib
_sre                fnmatch             nodegraphvellumutils tempfile
_ssl                formatter           nodegraphview       terraintoolutils
_strptime           fpformat            nodesearch          test
_struct             fractions           nodeselectionutil   textwrap
_subprocess         ftplib              nodethemes          this
_symtable           functools           nodeutils           thread
_threading_local    furtoolutils        nose                threading
_usdHoudini         furutils            nt                  time
_usdMantra          future_builtins     ntpath              timeit
_warnings           gamedevutils        nturl2path          tkColorChooser
_weakref            gasresizedynamic    numbers             tkCommonDialog
_weakrefset         gc                  numpy               tkFileDialog
_winreg             generateHDAToolsForOTL objecttoolutils     tkFont
abc                 generate_proto      opcode              tkMessageBox
aifc                genericpath         operator            tkSimpleDialog
alignutils          genshi              opnode_sum          toaiff
antigravity         getopt              optixdownload       token
anydbm              getpass             optparse            tokenize
argparse            gettext             os                  toolprompts
args2hda            githubdownloader    os2emxpath          toolutils
array               glob                paginate            toptoolutils
assetauthortools    gzip                paramiko            trace
assetdownload       hashlib             parmutils           traceback
ast                 hdefereval          parser              ttk
asynchat            heapq               particletoolutils   tty
asyncore            hjson               pdb                 turtle
atexit              hjsonrpc            pdg                 types
audiodev            hmac                pdgjob              uiutils
audioop             hotkeys             perfmon_sum         unicodedata
autorig             hotshot             pickle              unittest
autorigs            hou                 pickletools         urllib
bakeanimation       hou_settings        pipes               urllib2
base64              houdiniInterpreter  pkg_resources       urllib3
bdb                 houdini_external_editor pkgutil             urlparse
beaker              houdiniengineutils  platform            user
binascii            houdinihelp         plistlib            uu
binhex              houdiniinternals    popen2              uuid
bisect              houpythonportion    poplib              vexpressionmenu
bookish             houxmlrpc           poselib             viewerstate
bsddb               hqrop               posespacedeform     viewportmeasuretool
bvhviewer           hqueue              posixfile           volumetoolutils
bz2                 hrender             posixpath           vopcallbacks
cPickle             hrpyc               poster              vopfxmenu
cProfile            hscp                pprint              vopnettoolutils
cStringIO           htmlentitydefs      profile             voptoolutils
calendar            htmllib             pstats              warnings
canvaseventtypes    httplib             pty                 wave
certifi             husd                pxr                 weakref
cgi                 husdshadertranslators py_compile          webbrowser
cgitb               hutil               pyclbr              webob
channelwranglesnippet idlelib             pycurl              werkzeug
charactertoolutils  idna                pydoc               whichdb
chardet             ihooks              pydoc_data          whoosh
charpicker          imageop             pyexpat             winsound
chopnettoolutils    images2gif          pygments            wsgiref
choptoolutils       imaplib             pyro2               xdrlib
chunk               imghdr              pyside2uic          xml
click               imp                 pythonscriptmenu    xmllib
cloud               importlib           quickplanes         xmlrpclib
cloudEULA           imputil             quopri              xxsubtype
cloudsubmit         index_help          radialmenu          zipfile
cloudtoolutils      inlinecpp           random              zipimport
cmath               inspect             re                  zlib
cmd                 introspect          render              
code                io                  rendertracker       

Enter any module name to get more help.  Or, type "modules spam" to search
for modules whose descriptions contain the word "spam".
```

540個程でしょうか。
*_____builtin____* みたいなのはほっとくとしても結構いっぱいありますね。

気になったところがいくつかありました。
**karmautils** はもうKarmaを先取りしてあるんでしょうか。
**husd** はUSDを扱うものでしょうか？気になりますね。
**nodegraph** シリーズ、**dop** シリーズ は多いですね
**PySide2** や **TKinter** などのUI系、**numpy** 、**math** などの算術系もデフォルトで使えます。
画像を扱う**PIL**、簡易データベースを扱う**sqlite3**もすぐに使える状態なので便利です。

モジュールのメンバーは組み込み関数の `dir` で確認出来ます。
気になる **husd** に `dir` をかけて中身を見てみると

```
>>> for i in dir(husd):
...     print i
... 
GetEditorNodesForLayer
GetLabelForLayer
GetRootLayerStackInfo
GetScalarTypeFromAttr
GetShortString
GetValue
Gf
HUSD_ATTRIBUTE_TYPE_TOKEN
HUSD_PARM_CONTROLLER_PREFIX
HUSD_PRIMITIVE_PATH
HUSD_PROPERTY_CATEGORY
HUSD_PROPERTY_NAME
HUSD_PROPERTY_VALUETYPE
HUSD_RELATIONSHIP_TYPE_TOKEN
OrderedDict
QtCore
QtGui
QtWidgets
SceneGraphDetails
Sdf
TEMPLATE_TYPE_MAP
TYPE_TEMPLATE_MAP
Tf
ToString
Usd
UsdGeom
UsdHoudini
UsdMantra
__builtins__
__doc__
__file__
__name__
__package__
__path__
addParmsToGroup
appendSpareParm
attrutils
bakeAnimation
convertFromGf
createAttributesForParmTemplateGroup
createClassForNodeType
createParmForAttr
createParmForRelationship
createParmTemplateForAttr
createParmTemplateForProperty
createParmTemplateForRelationship
createParmTemplateGroupForPrim
createPropertyForParmTemplate
createSchemaHeader
fixParmName
getParmForProperty
getParmTemplateGroupForPrim
getPropertyClassForParmTemplate
getScalarValue
groupby
hdefereval
hou
houdinihelp
importPropsAtPrim
isGfType
isUsdAttrParm
isValidParm
listPropsAtNode
math
parmValueToUsd
parmutils
populateScalarValue
primpicker
propsOnPrim
re
scenegraphdetails
typeutils
usdTypeForParmTemplate
warnings
```

やはりUSD絡みの様ですね。
更に`help( husd.scenegraphdetails )` などとしてみると

```

>>> help( husd.scenegraphdetails )
Help on module husd.scenegraphdetails in husd:

NAME
    husd.scenegraphdetails

FILE
    c:\progra~1\sideef~1\houdin~1.378\houdini\python2.7libs\husd\scenegraphdetails.py

CLASSES
    PySide2.QtWidgets.QFrame(PySide2.QtWidgets.QWidget)
        SceneGraphDetails
    
    class SceneGraphDetails(PySide2.QtWidgets.QFrame)
     |  Method resolution order:
     |      SceneGraphDetails
     |      PySide2.QtWidgets.QFrame
     |      PySide2.QtWidgets.QWidget
     |      PySide2.QtCore.QObject
     |      PySide2.QtGui.QPaintDevice
     |      Shiboken.Object
     |      __builtin__.object
     |  
     |  Methods defined here:
     |  
     |  __init__(self, pane)
     |  
～～～～～～～～以下略～～～～～～～～～～

```
なんとなくUSDのシーングラフを編集出来るインターフェイスの様に見えます。

`dir`でモジュールの中身を調べて使えそうなものを探していき`help`で使い方を確認しながら自分が気になるモジュールを物色していけます。
こんな風にPythonで出来ることの幅を広げていくのもオススメです。
せっかく用意して下さっているモジュールを使わない手は無いですね。

というわけで皆様良きHoudini Pythonライフを。