看起来他们在Python 3中取消了所有快速加载脚本的简单方式,通过移除execfile()
。
我是否遗漏了一些明显的替代方案?
看起来他们在Python 3中取消了所有快速加载脚本的简单方式,通过移除execfile()
。
我是否遗漏了一些明显的替代方案?
%run /path/to/filename.py
我只是一个新手,也许是纯粹的运气让我找到了这个:
在尝试使用解释器提示符 >>> 命令运行脚本后
execfile('filename.py')
import filename
它运行得很好 :-)
我希望这可以有所帮助,感谢大家提供的伟大提示、示例和所有那些精心注释的代码片段,这对新手来说是一个巨大的启发!
我使用的是Ubuntu 16.014 LTS x64。 Python 3.5.2(默认值,2016年11月17日,17:05:23) [GCC 5.4.0 20160609]在Linux上
reload
已经回归,作为3.2版本之后的imp.reload
。 - Danica%run script_name
适用于所有版本的Python。 - Michaelimp
模块被替换为必须先导入的importlib
模块。使用importlib.reload(mod_name)
可以重新导入并执行mod_name
模块。 - P. Wormerrunfile()
的功能,因为我需要运行一个在其自己的命名空间中执行的 Python 脚本(与在 调用 命名空间中执行相反)。 我的应用程序:使用__file__
属性将被调用脚本的目录添加到系统路径 (sys.path
) 中:如果我们使用execfile()
或其 Python 3 中的等效方法 (exec(open('file.py').read())
),则包含的脚本将在调用命名空间中运行,因此__file__
解析为 调用 文件名。 - mastropisys.argv
真的超出了此函数的范围,并且有一些(在我看来)不可接受的缺点,因为调用者可能在其他地方使用sys.argv
。这可能会被暂时覆盖(这不是线程安全的)...但在某些情况下仍然可以接受。无论如何 - 这不是原始 execfile 支持的,如果您想要可选地传递环境、argv、工作目录等,则可以提供一个单独的答案。 - ideasman42