我正在创建模块(带有子模块)。我们称它为lib
。我试图让它工作如下:Python:从执行的模块导入
- 我能够运行它(有
lib.__main__
)。它内部使用lib.utils
。 - 执行部分工作时是加载用户传递的其他文件/模块。目前它通过
importlib.import_module(name)
来完成。 - 此加载模块还需要使用
lib.utils
。
我有以下选择:
- 在加载模块使用
import utils
代替import lib.utils
。我觉得它有点误导,并想避免这种情况。 - 以任何外部方式运行模块,甚至使用内部只有
import lib.__main__
的文件。
我唯一想做的事情就是做sys.path.append(os.getcwd())
。不仅看起来很脏,而且还使log.utils
模块加载两次。
有什么可以让我执行lib.__main__
,但需要在加载的模块中使用import lib.utils
?
您是否遇到某种错误?只要'lib'和持有要导入的模块的目录位于python路径中,就应该这样工作。 – tdelaney 2015-03-13 16:28:06
...假设'lib'是一个包(具有'__init __。py') – tdelaney 2015-03-13 16:29:36
'lib'具有'__init __。py'并且位于当前目录中。当我将它('lib'的父项)添加到PYTHON_PATH或sys.path'import lib.utils'工作中,但再次加载模块时(因为'lib .__ main__'认为它使用'utils',而不是'lib.utils' )。 – Noxitu 2015-03-13 17:05:01