在一个单元格中,我有
def function():
stuff
Run Code Online (Sandbox Code Playgroud)
在前面提到的单元格下方的单元格中,我调用
function()
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
name 'function' is not defined.
Run Code Online (Sandbox Code Playgroud)
如何在 iPython 的另一个单元格中调用函数?
我想要scrapy
并且有scrapy shell"URL"命令,使用URL中的响应对象执行控制台ipython.
但我想用笔记本做那件事.
有没有办法用笔记本执行scrapy shell,
或者如何手动在ipython中获取URL的相同响应对象?
鉴于在外部服务器上运行的iPython笔记本,有没有办法触发文件下载?
我希望能够让笔记本能够启动将生活在外部服务器上的文件下载到本地呈现笔记本的位置,或者从笔记本工作区执行直接字符串转储到文本文件中,在本地下载.
IE是一个功能强大的工具,它可以是一个可以从数据库查询,更改数据并将查询结果下载为CSV文件的Notebook.

一个快速实验表明,包含以下内容的单元格会生成一个下载文件的链接.我希望有一个更清晰的解决方案,而不是将数据渲染到HTML框架中.
%%html
<a href="data:application/octet-stream,'string of things'">Download a file</a>
Run Code Online (Sandbox Code Playgroud) 我在ubuntu vm上运行IPython笔记本.到目前为止,一切都很好,除了我无法做交互式matplotlib情节.
我得到的错误是: TclError: no display name and no $DISPLAY environment variable
而我只是想尝试遵循这些超级基础教程.
http://nbviewer.ipython.org/github/jakevdp/matplotlib_pydata2013/tree/master/notebooks/
有小费吗?我做了一些研究,但似乎没有什么适用于从ubuntu机器运行iPython.我知道我忽略了一些明显的东西.
在与ThomasK谈到此事后,似乎我需要在iPython中运行%matplotlib nbaggs以下%matplotlib inline来从我的VM中获取交互性.
但是,交互性仅在最新版本的matplotlib(1.4.x)中提供,因此我需要从1.3.x升级.
运行后sudo pip install matplotlib --upgrade,我的.pip_log中出现以下错误.
有什么建议?
----------------------------------------
Cleaning up...
Removing temporary dir /tmp/pip_build_root...
Command python setup.py egg_info failed with error code 1 in /tmp/pip_build_root/matplotlib
Exception information:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1229, in …Run Code Online (Sandbox Code Playgroud) 我在iPython笔记本中有一段代码,它以编程方式生成一个名为'sound'的文件夹,其中包含以下文件:index.html,canvas.js,graph.js和style.css.
如果我在浏览器中打开index.html,我可以看到我想要的输出:一个带有漂亮的JS动画的图形,表示我正在建模的过程进出的向量.

但是,我想从iPython笔记本本身内部显示HTML文件.
为此,我输入以下代码:
from IPython.display import IFrame
IFrame('/Users/useird/Desktop/sound/index.html', width=700, height=350)
Run Code Online (Sandbox Code Playgroud)
返回以下内容:

我不是css或js的专家,但我认为iPython可以在iframe中显示js,所以这里有什么问题?
谢谢
有没有办法让函数(由IPython Notebook单元调用)检索JavaScript变量的内容(例如IPython.notebook.notebook_path,其中包含当前笔记本的路径)?
直接在单元格中编写时,以下情况很有效(例如,基于此问题及其注释):
from IPython.display import display,Javascript
Javascript('IPython.notebook.kernel.execute("mypath = " + "\'"+IPython.notebook.notebook_path+"\'");')
Run Code Online (Sandbox Code Playgroud)
但是,如果我试图把它放在一个函数中,那就会崩溃:
# this doesn't work
from IPython.display import display,Javascript
def getname():
my_js = """
IPython.notebook.kernel.execute("mypath = " + "\'"+IPython.notebook.notebook_path+"\'");
"""
Javascript(my_js)
return mypath
Run Code Online (Sandbox Code Playgroud)
(是的,我一直试图让global该mypath变量,无论是从内my_js.脚本,并从函数中还要注意:不要吃剩的可能值从以前的命令变量所迷惑,以确保使用mypath = None; del mypath重置调用函数之前的变量,或者重启内核.)
制定问题的另一种方法是:"变量设定的范围(时间和地点)是IPython.notebook.kernel.execute()什么?"
我认为这不是一个无关紧要的问题,可能与IPython用来控制其内核及其变量的机制有关,而且我对此并不了解.以下实验说明了该机制的某些方面.以下工作在两个单独的单元格中完成,但如果两个单元格合并则不起作用:
细胞[1]:
my_out = None
del my_out
my_js = """
IPython.notebook.kernel.execute("my_out = 'hello world'");
"""
Javascript(my_js)
Run Code Online (Sandbox Code Playgroud)
细胞[2]:
print(my_out)
Run Code Online (Sandbox Code Playgroud)
这有效并产生预期的效果hello world …
对于至少99%的jupyter/ipython笔记本,我使用以下导入:
import pandas as pd
from pandas.io.json import json_normalize
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
from bson import json_util, ObjectId
import json
from datetime import datetime, timedelta
import pytz
pd.set_option('max_columns', 50)
mpl.style.use('ggplot')
%pylab inline
Run Code Online (Sandbox Code Playgroud)
有没有人发现任何类型的解决方案,允许我自动执行此操作或创建某种宏?
在IPython中,如果我运行一个单元格,浏览器会滚动将单元格放在页面底部附近.如果在绘制图表时发生这种情况,那么我无法看到图表并且必须手动向下滚动.我怎么能阻止这种情况发生?
我从下面链接获得的代码,可以将数据保存到磁盘.
http://tohyongcheng.github.io/python/2016/06/07/persisting-a-cache-in-python-to-disk.html
我试了但是文件没有生成.
import atexit
import pickle
# or import cPickle as pickle
def persist_cache_to_disk(filename):
def decorator(original_func):
try:
cache = pickle.load(open(filename, 'r'))
except (IOError, ValueError):
cache = {}
atexit.register(lambda: pickle.dump(cache, open(filename, "w")))
def new_func(*args):
if tuple(args) not in cache:
cache[tuple(args)] = original_func(*args)
return cache[args]
return new_func
return decorator
Run Code Online (Sandbox Code Playgroud)
我尝试按照示例使用此代码...
@persist_cache_to_disk('users.p')
def get_all_users():
x = 'some user'
return x
Run Code Online (Sandbox Code Playgroud)
更新:
这是在python命令提示符下工作,但在ipython笔记本中不起作用.
我正在学习使用ipython笔记本的课程.当我尝试下载笔记本时(通过文件 - >下载为 - > ipython笔记本),我得到一个以".ipynb.json"结尾的文件.它不作为ipython笔记本打开,而是作为.json文件打开,所以像这样:
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"_You are currently looking at **version 1.1** of this notebook. To download notebooks and datafiles, as well as get help on Jupyter notebooks in the Coursera platform, visit the [Jupyter Notebook FAQ](https://www.coursera.org/learn/python-data-analysis/resources/0dhYG) course resource._\n",
"\n",
"---"
]
},
...
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试删除文件名中的".json",但它不起作用.如何将此文件转换回可以作为ipython笔记本打开和运行的文件?非常感谢你!
ipython-notebook ×10
ipython ×5
python ×4
javascript ×2
canvas ×1
css ×1
html ×1
json ×1
jupyter ×1
matplotlib ×1
python-2.7 ×1
scrapy ×1
tkinter ×1