gpt4 book ai didi

python - 从不同的源文件以编程方式诱导 IPython 笔记本输出单元

转载 作者:行者123 更新时间:2023-11-28 19:21:39 28 4
gpt4 key购买 nike

假设有一个 Python 文件 myfile.py。可以将文件的内容视为将其粘贴到 IPython 笔记本中的单个单元格中然后执行(生成的任何输出都应在笔记本中生成)。

是否有可能以编程方式导致这种情况发生?也就是说,我想调用类似“python myfile.py”的东西,结果是启动一个笔记本,弹出一个选项卡,只有 myfile.py 产生的输出已显示在笔记本中。

我特别希望避免 .py 文件“变成笔记本”并且要执行的代码显示为输入单元格的情况。

这个想法是调用这个 .py 文件来像网络应用程序一样运行——所以只有输出应该在笔记本中弹出。不过,笔记本的内核应该仍在运行,以防万一存在必须将回调发布到 .py 文件中的代码的交互。

IPython 中似乎已经存在每一部分(交互式小部件、转换为笔记本,甚至只是使用 Popen 启动笔记本)——但不清楚如何以仅输出的方式从普通 .py 文件启动出现。

这是一个尝试:

import sys
import subprocess
from IPython.nbformat import current as nbf

# Parse the output cell needed from the file
py_file_name = sys.argv[1]
with open(py_file_name, 'r') as py_file:
py_code = py_file.read()

# Set an input cell and invoke it.
nb = nbf.new_notebook()
cells = [nbf.new_code_cell(py_code)]
nb['worksheets'].append(nbf.new_worksheet(cells=cells))

# Store the result into a notebook.
notebook_name = py_file_name + '.ipynb'
with open(notebook_name, 'w') as f:
nbf.write(nb, f, 'ipynb')

# Launch a new IPython notebook kernel
subprocess.call(["ipython", "-c", "'%run {}'".format(notebook_name)])

这并不理想——因为它仍然需要我填充单元格的输入部分,然后实际打开文件并执行它。

即便如此,当我在底部使用 %run 选项时,还是出现错误,如下所示:

ely@eschaton:~$ python launcher.py myfile1.py
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/home/ely/anaconda/lib/python2.7/site-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
202 else:
203 filename = fname
--> 204 __builtin__.execfile(filename, *where)

/home/ely/myfile1.py.ipynb in <module>()
8 {
9 "cell_type": "code",
---> 10 "collapsed": false,
11 "input": [
12 "import numpy as np\n",

NameError: name 'false' is not defined

最佳答案

只需删除 anaconda,它就会以某种方式导致此问题。要删除它,只需执行 rm -rf ~/anaconda 并再次尝试执行 %run(假设您具有所有 pandas/ipython 要求)

关于python - 从不同的源文件以编程方式诱导 IPython 笔记本输出单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23586549/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com