在长时间的交互会话(使用 ipython)中,我有时需要使用尚未安装的模块。
安装新模块后,该模块可以在新的交互式会话中导入,但不能在安装之前运行的会话中导入。由于我正在使用内存中的所有变量,我不想重新启动会话......
我怎样才能获得这样一个先前运行的会话来导入新模块?
在 Python 中手动导入内容有两种方法(取决于您的 Python 版本)。
# Python2
import os
os.chdir('/path')
handle = __import__('scriptname') #without .py
handle.func()
或者你可以这样做:
# Python3.3+
import importlib.machinery
loader = importlib.machinery.SourceFileLoader("namespace", '/path/scriptname.py') #including .py
handle = loader.load_module("namespace")
handle.func()
这在以前版本的 Python3 中工作得有点不同,现在没有时间或权限来安装旧版本,但我记得在尝试导入尤其是重新加载早期版本中的模块时遇到了一些问题。
要重新加载这些模块以防它们发生变化(只是为了详细说明这个答案):
# Python2
reload(handle)
# Python3
import imp
imp.reload(handle)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)