在 python 中导入模块我需要一点帮助。所以..没有不必要的喋喋不休:
我有特定的目录和模块结构:
- 多软件/
- 核/
- __init__.py
- 软1/
- __init__.py
- 控件.py
- 钻机.py
- 我的软件/
- __init__.py
- 控件.py
- 钻机.py
现在从用户的角度来看,您只需导入:
import multisoft.Core as MSC
例如,您应该通过以下方式访问子模块:
MSC.Controls.someFunction()
该模块可以在不同的软件中使用,从用户的角度来看,您在哪个软件中都没有关系。这个模块的使用是一样的。当然,子模块的实现因软件而异。
我有一些必须遵守的限制。基本上每个模块都可以有更多或更少的文件。在每个软件实现中都必须考虑到 __all__ 变量:
- MySoft/__init__.py
- 软1/__init__.py
(在那些初始化文件中,您放置了 __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()
但是我不能重新加载这个模块,这是我必须保持的约束之一。
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 #
谢谢你的帮助
所有最好的卡米尔