Python でモジュールをインポートするのに少し助けが必要です。だから..不要なおしゃべりなしで:
ディレクトリとモジュールの特定の構造があります。
- マルチソフト/
- 芯/
- __init__.py
- ソフト1/
- __init__.py
- Controls.py
- Rigs.py
- マイソフト/
- __init__.py
- Controls.py
- Rigs.py
ユーザーの観点からは、次のもののみをインポートします。
import multisoft.Core as MSC
たとえば、次の方法でサブモジュールにアクセスする必要があります。
MSC.Controls.someFunction()
このモジュールはさまざまなソフトウェアで使用でき、ユーザーの観点からは、どのソフトウェアを使用しているかは問題ではありません。このモジュールの使い方は同じです。もちろん、サブモジュールの実装はソフトウェアごとに異なります。
そして、私には守らなければならないいくつかの制約があります。基本的に、すべてのモジュールは多かれ少なかれファイルを持つことができます。また、すべてのソフトウェア実装で __all__ 変数を考慮する必要があります。
- MySoft/__init__.py
- Soft1/__init__.py
(これらの init のファイルに __all__ 変数を入れます: __all__ = ['Controls', 'Rigs'])
基本的にやりたいことを行うコードの一部を作成しました。
コア/__init__.py
import os
import sys
def _softRecognize():
if youAreInSoft1():
directory = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0,directory)
module = __import__('Soft1', fromlist=['*'])
globals().update(vars(module))
_softRecognize()
しかし、このモジュールをリロードすることはできません。これは、守らなければならない制約の 1 つです。
import multisoft.Core as MSC
reload(MSC)
# Error: reload(): module Soft1 not in sys.modules
# Traceback (most recent call last):
# File "<maya console>", line 1, in <module>
# ImportError: reload(): module Soft1 not in sys.modules #
助けてくれてありがとう
すべての最高のカミル