【问题标题】:Spyder runfile from other script来自其他脚本的 Spyder 运行文件
【发布时间】:2017-05-10 14:03:05
【问题描述】:

我正在尝试在 Spyder 的脚本中使用运行文件。 当我这样做时,我收到此错误:

KeyError: '__file__'

我怎样才能避免这个错误?

额外信息: 我之前已经将其他脚本作为模块导入并相应地运行它们,但我希望能够灵活地单独运行脚本(在脚本本身中指定输入参数)或从其他脚本调用它们(在调用它们时指定参数)。

提前致谢!

【问题讨论】:

  • (这里是 Spyder 开发者) 我认为在 runfile 的当前设计下这是不可能的,抱歉。
  • @CarlosCordoba 我明白了。还有其他方法可以做我想做的事吗?
  • 我认为你可以使用 IPython 的 %run 魔法来代替 runfile

标签: python spyder


【解决方案1】:

这是一个如何做到这一点的例子。我有两个简短的 python 程序,由脚本控制。 runfile_a.pyrunfile_b.py 这两个程序都包含:

if __name__ == "__main__":
    print(__file__.split("\\")[-1], __name__)

脚本包含:

# Paths edited
runfile('C:/Python/runfile_a.py', wdir='C:/Python')
runfile('C:/Python/runfile_b.py', wdir='C:/Python')

Spyder 中脚本执行的输出:

In [11]: runfile('C:/Python/runfile_tst_ab.py', wdir='C:/Python')
runfile_a.py __main__
runfile_b.py __main__

从输出中,我可以看到每个程序都在一个 拥有自己的__file__ 的环境。

Github 上列出了 Spyder 中 runfile() 方法的代码: https://github.com/spyder-ide/spyder/blob/master/spyder/plugins/console/utils/interpreter.py.

【讨论】:

    猜你喜欢
    • 2014-07-29
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多