标签: ipython-magic

在IPython中使用Interactive Shell之外的魔术命令

有没有办法从外部文件中使用来自IPython的"魔术命令"?例如,如果我有一个文件,"rcode.py"代码如下:

%load_ext rmagic
%R a=c(1,2,3);b=c(2,3,4);print(summary(lm(a~b)))
Run Code Online (Sandbox Code Playgroud)

SyntaxError当我ipython rcode.py在命令行中使用它时,这给了我第一行.但是,当我使用ipython将这些行直接输入交互式shell时,它运行正常.这是因为你只在交互式shell中做魔术吗?

谢谢!

python ipython ipython-magic

6
推荐指数
1
解决办法
976
查看次数

在ipython中使用魔术%粘贴时,如何才能将其粘贴到复制的代码中,而不是粘贴和执行,以便可以对其进行编辑

在ipython中使用magic%paste时,它会执行粘贴的代码,而不仅仅是粘贴.如何才能让它只是粘贴复制的代码,以便可以编辑?

paste ipython ipython-magic

6
推荐指数
1
解决办法
2848
查看次数

如何编写一个在python而不是shell中执行的ipython别名?

我们可以使用magic函数在ipython中定义一个别名%alias,如下所示:

>>> d
NameError: name 'd' is not defined
>>> %alias d date
>>> d
Fri May 15 00:12:20 AEST 2015
Run Code Online (Sandbox Code Playgroud)

date当您键入dipython 时,这会转义到shell命令.

但是我想在当前的解释器范围中定义一个别名来执行一些python代码,而不是shell命令.那可能吗?我们怎么能做出这种别名呢?

我经常在交互式解释器中工作,这可以为我节省很多我经常重复的命令,并且还可以防止一些常见的拼写错误.

python macros alias ipython ipython-magic

5
推荐指数
1
解决办法
906
查看次数

%load_ext如何在ipython中工作

我安装了软件包:https : //github.com/jaysw/ipydb

根据本教程,我应该使用它来启用它,

$ ipython
In [1] : %load_ext ipydb
Run Code Online (Sandbox Code Playgroud)

它看起来像一个IPython扩展。

但是我感到困惑,这个软件包没有安装在我的〜/ .ipython / extensions下

aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/extensions/
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/nbextensions/
livereveal usability
Run Code Online (Sandbox Code Playgroud)

所以,我想知道

  • %load_ext魔术如何工作或当我键入“%load_ext ipydb”时发生了什么

  • 如果我只键入“ ipython”,ipython将如何进行配置,它将使用默认配置文件,但在我的“〜/ .ipython / profile_default /”下没有配置文件

以下是默认配置文件和一个用户定义的配置文件:

aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/profile_default/
db             history.sqlite log            nbconfig       pid            security       startup        static
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ipython profile create my_profile
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_kernel_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_console_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_qtconsole_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_notebook_config.py'
[ProfileCreate] Generating default …
Run Code Online (Sandbox Code Playgroud)

ipython ipython-notebook ipython-magic

5
推荐指数
1
解决办法
2498
查看次数

安装Jupyter Notebook扩展

我尝试未成功安装Jupyter Notebook的某些扩展,但不知道该怎么做。所以基本上我想在笔记本中检查pep8代码。我检查了这篇文章: 在iPython笔记本代码中验证PEP8

但是%install_ext已弃用,所以我改用了

jupyter nbextension install https://raw.githubusercontent.com/SiggyF/notebooks/master/pep8_magic.py --user
Run Code Online (Sandbox Code Playgroud)

所以我得到:

Copying: /tmp/tmpw74yl7m2/pep8_magic.py -> /home/louis/.local/share/jupyter/nbextensions/pep8_magic.py

To initialize this nbextension in the browser every time the notebook (or other app) loads:

          jupyter nbextension enable <the entry point> --user
Run Code Online (Sandbox Code Playgroud)

从现在开始,我无法正常工作。我试过了:

~$ jupyter nbextension enable pep8_magic.py --user
Enabling notebook extension pep8_magic.py...
      - Validating: problems found:
        - require?  X pep8_magic.py
Run Code Online (Sandbox Code Playgroud)

没有成功。

有人可以解释一种简单的方法来使其正常工作,以及我错过的有关jupyter扩展的东西吗?

谢谢 !

python ipython-notebook ipython-magic jupyter jupyter-notebook

5
推荐指数
1
解决办法
2241
查看次数

配置Ipython的后端以使用带代码的视网膜显示模式

我正在使用代码配置Jupyter笔记本,因为我有一个包含大量笔记本的repo,并希望保持所有样式的一致性,而不必在每个开头都写出冗长的设置.这样,我所做的就是有一个配置CSS的方法,一个用于设置Matplotlib,另一个用于配置Ipython.

我按照这种方式配置我的笔记本而不是依赖于文档的配置文件的原因有两个:

  1. 我公开分享这个笔记本电脑的回购,我希望我的所有配置都可见
  2. 我想保留这些配置仅仅是我正在创建的这个回购

作为示例,设置CSS的方法看起来像

def set_css_style(css_file_path='../styles_files/custom.css'):

    styles = open(css_file_path, "r").read()
    return HTML(styles)
Run Code Online (Sandbox Code Playgroud)

我在每个笔记本的开头用它来调用它set_css_style().同样,我有这个方法来配置Ipython的细节:

def config_ipython():

    InteractiveShell.ast_node_interactivity = "all"
Run Code Online (Sandbox Code Playgroud)

以上都使用进口

from IPython.core.display import HTML
from IPython.core.interactiveshell import InteractiveShell
Run Code Online (Sandbox Code Playgroud)

目前,可以看出,配置Ipython的方法只包含指令,以便当我在单元格中的多行中键入变量名称时,我不需要添加一个print以使它们全部被打印.

我的问题是如何转换Jupyter魔术命令以获得数字代码的视网膜显示质量.这样的命令是

%config InlineBackend.figure_format = 'retina'
Run Code Online (Sandbox Code Playgroud)

从Ipython的文档中我找不到如何在一个方法中调用这个指令,即找不到InlineBackend生活的地方.

我只想将此配置行添加到config_ipython上面的方法中,是否可能?

ipython retina-display ipython-magic jupyter-notebook

5
推荐指数
1
解决办法
4880
查看次数

定义一个 IPython 魔法来替换下一个单元格的内容

line-magic命令%load将给定文件的内容加载到当前单元格中,例如,执行:

[cell 1]    %load hello_world.py
Run Code Online (Sandbox Code Playgroud)

...将单元格转换为:

[cell 1]    # %load hello_world.py
            print("hello, world")
Run Code Online (Sandbox Code Playgroud)

我想创建一个%load_nextline-magic 命令,它将将此文件加载到下一个单元格中。例如,在以下笔记本中执行单元 1:

[cell 1]    %load_next hello_world.py

[cell 2]    print("hello, cruel world")  # original content
Run Code Online (Sandbox Code Playgroud)

...将保持单元格 1 不变并使用新内容更新单元格 2:

[cell 1]    %load_next hello_world.py

[cell 2]    print("hello, world")
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这个:

[cell 1]    %load hello_world.py
Run Code Online (Sandbox Code Playgroud)

但它会在当前单元格和下一个单元格之间插入内容:

[cell 1]    %load_next hello_world.py

[cell 2]    print("hello, world")

[cell 3]    print("hello, cruel world")  # original content
Run Code Online (Sandbox Code Playgroud)

是否可以使其替换下一个单元格,或在插入下一个单元格之前删除下一个单元格?

python ipython ipython-magic jupyter-notebook

5
推荐指数
1
解决办法
751
查看次数

如何为 IPython(笔记本)shell 命令提供内联输入?

我想将 IPython 笔记本与一些 shell 命令及其输入放在一起。在 bash 提示中,我可以使用“here-document”语法:

bash-3.2$ mysql -u root <<END_IPUT
> use mydb;
> show tables;
> END_INPUT
Run Code Online (Sandbox Code Playgroud)

如何在 IPython 中获得相同的效果,特别是在 jupyter 笔记本中?我知道如何将 shell 命令作为 IPython 执行为“行魔术”或“单元魔术”,例如:

In [7]:  !! ls -tF
Out[7]:  ['Demo-notebook.ipynb',
          'createdb.sql',
          ...
Run Code Online (Sandbox Code Playgroud)

我已经将IPython 视为一个系统 shell,它展示了如何启用一些语法细节。在以下之后,我可以运行系统命令而无需预先添加!!!

# Turn everything in $PATH into an alias; 
# then enable calling aliases without ! or %
%rehashx      
%autocall 2 
Run Code Online (Sandbox Code Playgroud)

但是这些都无助于为这些命令提供输入内联:here-document 语法在 IPython 中无效,并导致 python SyntaxError。那么我该怎么做呢?

ipython ipython-notebook ipython-magic jupyter-notebook

4
推荐指数
2
解决办法
5388
查看次数

IPython 运行魔法:如何为“run -i”创建别名?

我正在编写一个 python 用户界面来控制实验室中的各种仪器。如果脚本不是交互式运行的,则在脚本结束时与仪器的连接会丢失,这可能非常糟糕。我想帮助用户“记住”以交互方式运行脚本。

我正在考虑两种可能的方法来做到这一点。首先,如标题中所指定,我可以为run -i

%alias_magic lab_run run -i
Run Code Online (Sandbox Code Playgroud)

但这会返回一个错误:

UsageError: unrecognized arguments: -i 
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题?

或者,我可以在脚本内部检测是否-i传递了标志,如果没有则引发错误。但是,它没有出现在sys.argv列表中:

In [1]: import sys
In [2]: run -i test.py random args
['test.py', 'random', 'args']
Run Code Online (Sandbox Code Playgroud)

我不能使用 ipy 文件,因为我需要读取 %run 标志,正如我在上一个问题中所解释的: 如何向 IPython 的魔术命令添加自定义标志?(.ipy 文件)

有人看到这个问题的解决方案吗?

python ipython ipython-magic

4
推荐指数
1
解决办法
758
查看次数

在 Jupyter Lab 中通过 SQL magics 连接到 SQL Server

我正在尝试使用 SQL 魔法通过 Jupyter Labs 连接到我们的远程 sql 服务器数据库。我可以使用传统的连接字符串进行连接,但 SQL 魔法似乎不起作用(这意味着我做错了什么)。下面是工作 pyodbc 连接:

conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=Server;'
                      'Database=DB;'
                      'Trusted_Connection=yes;')
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用魔法连接时,我收到一个错误,提示没有提供连接字符串

%load_ext sql
%sql engine = create_engine("mssql+pyodbc://user:password@server/db")
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想使用 DSN 与 Magics 连接(我也尝试过,但没有成功):

%load_ext sql
%sql engine = create_engine("mssql+pyodbc://DSN;Trusted_Connection = Yes")
Run Code Online (Sandbox Code Playgroud)

对连接正常工作有帮助吗?

sqlalchemy python-3.x ipython-magic jupyter-lab

4
推荐指数
1
解决办法
858
查看次数