はじめに
2020年に入りpythonclockのタイマーが停止しましたね。
しかし、CG業界は未だPython2.7を使い続けています。
(だってMayaとか3dsMAXとかHoudiniとかがまだ移行完了してないからしょうがないじゃん...
DCCツールはまだまだPython2.7
なんですが、スタンドアロンのPythonツールはPython2.7
である必要は無いのでPython3.7
を使ってます。
Python3.7
を使っててpathlib
が便利だなあと思って使ってるんですが、調べたらPython2.7
用にパッケージが用意されてたのでMayaにも入れて使ってみようと思います。
インストール
Python2.7でpathlibを使いたい場合はpip install pathlib
するだけでOK
Mayaで使う場合は-t
フラグでMayaが認識するPYTHONPATH
にインストール
私の場合は
%USERPROFILE%\Documents\maya\scripts
にsite-packages
フォルダを作成してそこにインストールしてます。
moduleファイルでPYTHONPATH
を認識するようにしてある。
インストールしやすいようにbatを用意してたりします。
echo off
set PIP_INSTALL_PACKAGE=
set /P PIP_INSTALL_PACKAGE="enter the package to install:"
py -2.7 -m pip install %PIP_INSTALL_PACKAGE% -t site-packages
pause
使ってみる
インストール完了したので使ってみようと思います。
import pathlib
pathlib.Path
# Result: <class 'pathlib.Path'> #
問題なくインポート出来てる!!
pathlib.Path(os.getenv("MAYA_LOCATION")).parent
# Result: WindowsPath('C:/Program Files/Autodesk') #
list(pathlib.Path(os.getenv("MAYA_LOCATION")).iterdir())
# Result: [WindowsPath('C:/Program Files/Autodesk/Maya2020/assets'),WindowsPath('C:/Program Files/Autodesk/Maya2020/bin'),WindowsPath('C:/Program Files/Autodesk/Maya2020/brushImages'),WindowsPath('C:/Program Files/Autodesk/Maya2020/brushShapes'),WindowsPath('C:/Program Files/Autodesk/Maya2020/cmake'),WindowsPath('C:/Program Files/Autodesk/Maya2020/devkit'),WindowsPath('C:/Program Files/Autodesk/Maya2020/docs'),WindowsPath('C:/Program Files/Autodesk/Maya2020/Examples'),WindowsPath('C:/Program Files/Autodesk/Maya2020/ExternalWebBrowser'),WindowsPath('C:/Program Files/Autodesk/Maya2020/icons'),WindowsPath('C:/Program Files/Autodesk/Maya2020/include'),WindowsPath('C:/Program Files/Autodesk/Maya2020/lib'),WindowsPath('C:/Program Files/Autodesk/Maya2020/mkspecs'),WindowsPath('C:/Program Files/Autodesk/Maya2020/modules'),WindowsPath('C:/Program Files/Autodesk/Maya2020/plug-ins'),WindowsPath('C:/Program Files/Autodesk/Maya2020/plugins'),WindowsPath('C:/Program Files/Autodesk/Maya2020/presets'),WindowsPath('C:/Program Files/Autodesk/Maya2020/Python'),WindowsPath('C:/Program Files/Autodesk/Maya2020/PYTHON_LICENSE'),WindowsPath('C:/Program Files/Autodesk/Maya2020/PYTHON_README'),WindowsPath('C:/Program Files/Autodesk/Maya2020/qml'),WindowsPath('C:/Program Files/Autodesk/Maya2020/resources'),WindowsPath('C:/Program Files/Autodesk/Maya2020/scripts'),WindowsPath('C:/Program Files/Autodesk/Maya2020/support'),WindowsPath('C:/Program Files/Autodesk/Maya2020/synColor'),WindowsPath('C:/Program Files/Autodesk/Maya2020/translations')] #
parent
で親階層、iterdir
でディレクトリの中身を見つけられる
list(pathlib.Path(os.getenv("MAYA_LOCATION")).glob("Python/DLLs/*.pyd"))
# Result: [WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/bz2.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/pyexpat.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/select.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/unicodedata.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/winsound.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_bsddb.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_ctypes.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_ctypes_test.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_elementtree.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_hashlib.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_msi.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_multiprocessing.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_socket.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_sqlite3.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_ssl.pyd'),WindowsPath('C:/Program Files/Autodesk/Maya2020/python/dlls/_testcapi.pyd')] #
globも使える!
おわりに
無事pathlib
が使えたので社内のライブラリに追加して積極的に使ってみようと思います。
Maya2021
が出るころにはPython3.7
になっていると良いのですが、移行したら移行したで既存のツール群のテコ入れ祭りが始まると思うので億劫ですね...
来るPython3.7
に備えて少しでも慣れておこうと思います。