3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【MAYA】一時的にpythonのライブラリパスを追加する(ちょっとだけ高機能

Last updated at Posted at 2018-01-16

一時的にpythonのライブラリパスを追加する便利ぽいやつを作りました。コードは投稿のお尻に。

  • 重複登録しない
  • パス文字列の自動整形ぽい機能
  • パスの存在チェック
  • win / mac 両対応
  • win / mac 環境にあわせた文字列に変換してから登録する

などの機能があります。なお、一時登録なのでMAYAを再起動すると設定は消えて無くなります。
パスを通さずに重いファイル開いちゃった時とか、実験用のコードを扱う場合などにお使いください。

MAYA 2018 + MacOS Sierra および、 MAYA 2017 + Windows10 Pro で動作確認しました。

 2018-01-17 2.55.25.png コードを実行すると、こんな感じのダイアログがでます。  2018-01-17 2.55.32.png 追加成功した場合。  2018-01-17 2.56.07.png そのパスがすでに存在した場合は追加できません。  2018-01-17 3.00.57.png 追加しようとしたフォルダが存在しない場合は追加するかどうか選べます。  2018-01-17 3.01.39.png Macで¥区切りのパスを登録しようとすると内部でmac式のパス記述に変換して動作します。MacにCドライブとかはないわけですが、ファイルサーバーをsmbではじまるパスで登録する時などは便利かもしれません?  2018-01-17 3.02.46.png `/` で登録したパスを `¥` で登録し直そうとしても  2018-01-17 3.04.04.png このように弾かれます。 キャプチャ.PNG windowsマシンでこのようなパスを登録して キャプチャ3.PNG その後違う書き方で登録しようとすると キャプチャ4.PNG 正しく弾かれます。

シェルフ登録用クイック実行コード

import sys
import os
import pymel.core as pm
import platform


def temp_def():
    result = pm.promptDialog(
                title='Python Path Appender',
                message='追加するライブラリパスを入力してください (win / mac OK)',
                button=['OK', 'Cancel'],
                defaultButton='OK',
                cancelButton='Cancel',
                dismissString='Cancel')

    if result != 'OK':
        return

    lib_path = pm.promptDialog(query=True, text=True)

    # 左右の空白を取り除く
    lib_path = lib_path.strip()

    # 一度posix(mac形式)のパス起票に統一して直す(両者の混在などをなくす)
    lib_path = lib_path.replace('\\', '/')

    if len(lib_path) <= 1:
        # あまり短いのは省いておく
        pm.confirmDialog(title='確認', message='パスが短すぎます。', button='OK')
        return

    if lib_path.endswith('/'):
        # 最後のパス区切り文字は消しておく(そのままでも大丈夫だが統一して重複をなくす)
        lib_path = lib_path[:-1]

    if platform.system() == 'Windows':
        # 元に戻す
        lib_path = lib_path.replace('/', os.path.sep)

    if lib_path in sys.path:
        pm.confirmDialog(title='確認', message='パスはすでに登録されています。', button='OK')
        return

    file_exsistence = os.path.exists(lib_path)
    if not file_exsistence:
        result = pm.confirmDialog(
            title='確認', message='"{}"\nパスがファイルシステムに存在しません、それでも登録しますか?'.format(lib_path),
            button=('OK', 'Cancel'),
            defaultButton='OK', cancelButton='Cancel', dismissString='Cancel')
        if result != 'OK':
            return

    sys.path.append(lib_path)
    pm.confirmDialog(title='確認', message='"{}"\n上記をパスに追加しました。'.format(lib_path), button='OK')


temp_def()
del temp_def
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?