IPython工作区

时间:2016-03-31 16:55:14

标签: python ipython workspace jupyter-notebook

我实验室中的一些用户已经习惯了Matlab的工作区,并从ipython笔记本开始。所以,我尝试使用ipython小部件模拟工作区。在ipython.py中,有一个工作区类。我曾尝试将它用作工作空间(get_ipython()),但该类无法从脚本访问ipython变量。如果我在笔记本中定义这个类,它可以工作但不能从脚本中工作。

所以我放了一个main,我用exec()执行文件,然后显示工作区对象:

path = '/home/download/'
file = 'ipython.py'
exec(open(path+file).read())
wksp

executiong方法有效,但它真的很难看。有人知道如何让它变得更好吗?

ipython.py

2 个答案:

答案 0 :(得分:0)

你应该使用

execfile()

不要使用exec()

示例:

execfile('/Home/Downloads/lel.py')

或为你:

path = '/home/download/'
file = 'ipython.py'
execfile(path+file)

并在您的ipython.py中,使用

if not __name__ == '__main__':
    # Call you object

问候!!

答案 1 :(得分:0)

我可能会遗漏一些东西,因为我不明白为什么要将其作为脚本运行。我只需删除if __name__ == '__main__,然后从笔记本中的模块导入wksp

from ipython import wksp
display(wksp)

正如评论中所解释的那样,当前代码在笔记本中定义的名称上调用eval(),这不起作用,因为这些名称未在调用eval()的范围内定义。但是你可以避免eval()

names = namespace.who_ls()
values = [namespace.shell.user_ns[name] for name in names]
types = [type(v) for v in varlist]