職場では、ツール/プラグインをチーム全体にプッシュする方法を開発しています。私は実際にシステムを稼働させており、これからお話しするトピックを除いて完全に動的です (これはすべて Python で行われます)。起動時に、Maya はローカル フォルダをサーバ上のフォルダと照合し、それらが異なるかどうかを確認し、必要なファイル/ディレクトリを処理してコピーし、サーバ上で削除した古いプラグインを削除します。このシステムは柔軟で、ユーザーはすべてのプラグインのカスタム シェルフを作成でき、すべてのユーザーのシェルフを壊すことなくバックエンドでフォルダーを再編成できます。プラグインには、Maya のメイン インタフェースのドロップダウン メニューからアクセスできます。コードをいじることなく、システムとプラグインにサブ フォルダを自由に追加できます。
プラグインを作成するまで、これはすべて正常に機能しています。プラグインがフォルダーにモジュールをインポートするときも、動的です。そのため、プラグイン フォルダーをルート ディレクトリの周りに移動し始めると、パスを作成したインポート モジュールがある場合、プラグイン スクリプト内のインポート モジュール パスがその時点で間違っています。メニュー設定からプラグインへの適切なパス情報を取得する方法はすでにあります。モジュールのインポートとそのモジュール内のクラスへのアクセスに問題があります。
モジュールのクラスをインポートするための標準
from fileName import className
そして、__import__
私が使用している方法は次のようになります。
className = __import__("folderN.folderN.folderN.fileName", {}, {}, ["className"])
しかし、そのメソッドを使用すると、通常の from import メソッドでできるように、そのクラス名を呼び出すことができなくなります。私はそれを回避しました
className = className.className
しかし、これはかなり醜い方法であり、追加の手順を実行せずに名前をインポートして呼び出すことができるようにしたいと考えています。私はこのインポート方法をよく知りませんし、いくつか欠けていることも知っています。
このインポートプロセスを間違った方法で行っているだけですか? プラグインを移動するたびに変更する必要がある奇妙なパスなしで、通常の方法でインポート メソッドを実行できるように、Maya のパスに追加せずにプラグインのローカル ディレクトリを調べる方法はありますか?