启动外部jupyter qtconsole并使用args运行脚本

时间:2017-02-08 16:24:49

标签: python bash jupyter qtconsole

我有一个脚本,它运行一个参数。通常,我可以使用标准python控制台使用以下命令从终端运行它:

$python3 myscript.py arg1 &

但我想在jupyter qtconsole中执行脚本。可以使用以下命令从终端启动外部控制台:

$jupyter qtconsole &

我尝试使用类似的方法启动jupyter qtconsole并使用参数myscript.py运行arg1

$jupyter qtconsole myscript.py arg1 &

但它没有奏效。是否有可能做到这一点?怎么样?

1 个答案:

答案 0 :(得分:0)

从新的qtconsole

In [14]: sys.argv
Out[14]: 
['/usr/local/lib/python3.5/dist-packages/ipykernel/__main__.py',
 '-f',
 '/run/user/1000/jupyter/kernel-25521.json']

In [16]: %connect_info
{
  "stdin_port": 57643,
  "key": "bcc03e84-7c43-4fbe-84d7-6c005aa37930",
  "ip": "127.0.0.1",
  "transport": "tcp",
  "iopub_port": 45064,
  "hb_port": 46748,
  "control_port": 39960,
  "kernel_name": "",
  "shell_port": 57532,
  "signature_scheme": "hmac-sha256"
}

Paste the above JSON into a file, and connect with:
    $> jupyter <app> --existing <file>
or, if you are local, you can connect with just:
    $> jupyter <app> --existing kernel-25521.json
or even just:
    $> jupyter <app> --existing
if this is the most recent Jupyter kernel you have started.

因此,如果我不

$ jupyter console --existing kernel-25521.json

我得到一个与qtconsole共享内核的控制台。如果我导入一个模块或在一个模块中创建一个变量,它就可以在另一个模块中使用。

通常,当我想在ipython中运行脚本时,我会使用%run魔法,而不是尝试将其包含在命令行中。

In [32]: %run echo_argv.py testing 1 2 3
['echo_argv.py', 'testing', '1', '2', '3']

而不是shell

$ipython3 -i echo_argv.py -- testing 1 2 3

要运行脚本而不进行任何进一步的交互,我使用常规的$python调用。无需涉及jupyteripython

$ python3 echo_argv.py -- testing 1 2 3

来自qtconsole配置选项:

  

KernelManager.kernel_cmd   :列表   默认值:[]

     

DEPRECATED:改为使用kernel_name。

     

启动内核的Popen命令。如果您有自定义内核,请覆盖它。如果在配置文件中指定了kernel_cmd, Jupyter不会将任何参数传递给内核,因为它无法对内核理解的参数做出任何假设。特别是,这意味着如果在Jupyter命令行中给出内核,则内核不会收到-debug选项。