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

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

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

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

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

<img width="177" alt=" 2018-01-17 2.55.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/43bc2232-669f-1299-1233-f2883d6b321c.png">
コードを実行すると、こんな感じのダイアログがでます。

<img width="120" alt=" 2018-01-17 2.55.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/5e7dd347-f62f-7dba-7dae-fa888c3a9c71.png">
追加成功した場合。

<img width="119" alt=" 2018-01-17 2.56.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/837b746d-ddbc-7e31-6822-a00c87d68ba5.png">
そのパスがすでに存在した場合は追加できません。

<img width="134" alt=" 2018-01-17 3.00.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/16dc8f9d-470d-109f-086b-168f7ec063a2.png">
追加しようとしたフォルダが存在しない場合は追加するかどうか選べます。

<img width="167" alt=" 2018-01-17 3.01.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/cdba7909-18c3-d0f8-85d2-9d0bdca3a037.png">
Macで¥区切りのパスを登録しようとすると内部でmac式のパス記述に変換して動作します。MacにCドライブとかはないわけですが、ファイルサーバーをsmbではじまるパスで登録する時などは便利かもしれません？

<img width="164" alt=" 2018-01-17 3.02.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/60e68da3-08e4-48f7-97dc-e5665d6cc38a.png">
`/` で登録したパスを `¥` で登録し直そうとしても

<img width="106" alt=" 2018-01-17 3.04.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/8302/acab9896-8639-75bc-6981-a13e4b325a53.png">
このように弾かれます。

<img width="242" alt="キャプチャ.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/8302/0cdda585-28c5-7567-1e85-e56ffc4ec4fe.png">
windowsマシンでこのようなパスを登録して

<img width="231" alt="キャプチャ3.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/8302/969b6034-2af4-d947-35cc-9a5ed051b737.png">
その後違う書き方で登録しようとすると

<img width="139" alt="キャプチャ4.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/8302/5e1d7fd6-410a-7066-e21b-1703d14013d9.png">
正しく弾かれます。

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

```python
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
```