Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hydrogen v0.7.0 incompatible with Ubuntu 14.04 LTS (IPython v1.2.1) #173

Closed
n-riesco opened this issue Feb 22, 2016 · 27 comments
Closed

Hydrogen v0.7.0 incompatible with Ubuntu 14.04 LTS (IPython v1.2.1) #173

n-riesco opened this issue Feb 22, 2016 · 27 comments
Assignees

Comments

@n-riesco
Copy link
Collaborator

We shouln't use spawnSync if Node.js is version 0.10. See this commit, this commit and this issue.

@slavaGanzin @rgbkrk what are your thoughts on this issue?

@slavaGanzin
Copy link
Contributor

I tested async methods and the only thing it fixes - small freeze of UI on hydrogen start.
Jupyter/ipython works slow on building list of kernels (second on my not so fast ssd, two-tree on hdd), but cache them after first run.

What I can propose:

  1. memoize kernels in hydrogen settings or in file
  2. on getAvailableKernels call we return our cached version and trigger async update of kernels cache

this may lead to first-time undiscoverability of freshly installed kernel, but thats ok, we had this before this commit

I'd chose to use spawnSync because:

  1. All code is synchronous
  2. It works 2 times faster than previous code

@n-riesco
Copy link
Collaborator Author

I'd like to find a solution that is kind to Ubuntu users.

I think having the option to store kernel specs in the Hydrogen settings would help a little. An Ubuntu user could edit the settings to workaround this issue. However, this won't do for Ubuntu users that lack the technical knowledge to create a kernel spec.

In the past, I thought of adding a flag to install the IJavascript kernel in Hydrogen. This would be possible, if the Hydrogen settings stored kernel specs.

@slavaGanzin
Copy link
Contributor

What the trouble with Ubuntu? They don't have ipython or jupyter in their paths?
@n-riesco Can you explain this in depth, please?

In iTourch docs i found this:

iTorch requires or works with
Mac OS X or Linux (tested in Ubuntu 14.04 and Arch Linux)
Torch-7
IPython version 2.2 or above (you can check your version of ipython using ipython --version)
ZeroMQ

So they should have iPython to work. And so it isn't in PATH as I think.

We shouln't use spawnSync

I don't wont user to edit anything, just memoize kernelspecs generated by jupyter kernelspec or ipython kernelspec in a file to speedup a little

@n-riesco
Copy link
Collaborator Author

The issue is that spawnSync is not available in Node.js 0.10 (which is the version provided in Ubuntu 14.04 LTS). Ubuntu releases LTS versions every 2 years, and supports each of them for 5 years. The upcoming Ubuntu 16.04 LTS won't be affected by this issue.

@slavaGanzin
Copy link
Contributor

I don't think this is high priority feature. If I found time to rewrite it in async way I'll do it. If you or someone else do PR it would be great.

Just curious: Why are you using necrostable lts on development machine?

@slavaGanzin slavaGanzin changed the title Hydrogen v0.7.0 incompatible with Ubuntu 14.04 LTS (Node.js 0.10) spanwSync is not supported Node.js 0.10 (Ubuntu 14.04 LTS) Feb 22, 2016
@slavaGanzin slavaGanzin self-assigned this Feb 22, 2016
@n-riesco
Copy link
Collaborator Author

To ensure Hydrogen runs in the version that Ubuntu currently advertises as "recommended for most users".

slavaGanzin added a commit that referenced this issue Feb 22, 2016
@slavaGanzin
Copy link
Contributor

Added notification:
80874a9

Can you test this?

@n-riesco
Copy link
Collaborator Author

Do I understand correctly? You want to prevent the installation of Hydrogen on Node.js 0.10 systems? If so, I don't support this change.

@n-riesco
Copy link
Collaborator Author

I have to leave now. Let's continue discussing the options to address this issue tomorrow.

BTW, have you seen https://www.npmjs.com/package/ipython-paths and https://www.npmjs.com/package/jupyter-paths ?

@slavaGanzin
Copy link
Contributor

Yeah we discussed that with Kyle. @rgbkrk #145

I don't want to rewrite half of hydrogen (all code is synchronous) to achieve small improvement - non freezing for half second. I've tried couple times, but haven't found enough motivation.

Doing the same to support Ubuntu LTS, really?
So I add notification for users who are more interested in hydrogen than in 'stability'.

@rgbkrk
Copy link
Member

rgbkrk commented Feb 22, 2016

I agree with doing away with spawnSync, relying on the asynchronous libraries we've been writing for Jupyter support in general. I'm not going to go back and forth on measurements if we don't have benchmarks. The fact is, JS is an asynchronous language by design and the slow startup is an issue for less beefy boxes - we can't act like our dev boxes are the best reflection.

Atom isn't using 0.10 though is it? My current version is 4.1.1. Is that an issue that which happens on install with apm?

all code is synchronous

Not all of Hydrogen is sync, especially the kernel messaging.

We're getting really close to where we need zmq-prebuilt to be and I'll be shipping a release soon for us to use, which dodges both the python2/node-gyp problem and the need zmq headers problem.

There are more packages for us (nteract at large) to finalize, then we can start getting them in Hydrogen (mostly to be spec compliant with Jupyter and also so we're not duplicating so much code).

@n-riesco
Copy link
Collaborator Author

@rgbkrk You're right: Atom is using Node.js v4.1.1.

I've tracked the problem down to the IPython version installed in Ubuntu 14.04.

IPython v1.2.1 doesn't understand the command ipython kernelspec list --json. This causes this line to produce an output that isn't valid JSON.

@rgbkrk
Copy link
Member

rgbkrk commented Feb 24, 2016

@n-riesco Have you tried out aggregating outputs from ipython-paths and jupyter-paths?

@n-riesco n-riesco changed the title spanwSync is not supported Node.js 0.10 (Ubuntu 14.04 LTS) Hydrogen v0.7.0 incompatible with Ubuntu 14.04 LTS (IPython v1.2.1) Feb 24, 2016
@n-riesco
Copy link
Collaborator Author

@rgbkrk apm doesn't seem to be using Node.js v4.1.1:

$ apm install
Installing modules ✗
> Hydrogen@0.7.0 preinstall /home/user/Documents/sync/src/github.com/hydrogen
> node dependencies.js



/home/user/Documents/sync/src/github.com/hydrogen/dependencies.js:9
    throw "Please install iojs or node >= 0.12. Hydrogen doesn't support older
    ^
Please install iojs or node >= 0.12. Hydrogen doesn't support older versions of node

npm ERR! Linux 3.13.0-79-generic
npm ERR! argv "/home/user/share/atom/resources/app/apm/bin/node" "/home/user/share/atom/resources/app/apm/node_modules/npm/bin/npm-cli.js" "--globalconfig" "/home/user/.atom/.apm/.apmrc" "--userconfig" "/home/user/.atom/.apmrc" "install" "--target=0.34.5" "--arch=x64"
npm ERR! node v0.10.40
npm ERR! npm  v2.13.3
npm ERR! code ELIFECYCLE
npm ERR! Hydrogen@0.7.0 preinstall: `node dependencies.js`
npm ERR! Exit status 8
npm ERR! 
npm ERR! Failed at the Hydrogen@0.7.0 preinstall script 'node dependencies.js'.
npm ERR! This is most likely a problem with the Hydrogen package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node dependencies.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls Hydrogen
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/user/Documents/sync/src/github.com/hydrogen/npm-debug.log

@n-riesco
Copy link
Collaborator Author

$ apm --version
apm  1.6.0
npm  2.13.3
node 0.10.40
python 2.7.6
git 1.9.1

@n-riesco
Copy link
Collaborator Author

$ ~/share/atom/resources/app/apm/bin/node --version
v0.10.40

@n-riesco
Copy link
Collaborator Author

Reading through issue atom/apm#328 I understand that the install scripts run in Node.js v0.10.40. If this is the case, I don't understand how it's possible for anyone to install Hydrogen@0.7.0.

@n-riesco n-riesco changed the title Hydrogen v0.7.0 incompatible with Ubuntu 14.04 LTS (IPython v1.2.1) Hydrogen v0.7.0 install fails Feb 24, 2016
@slavaGanzin
Copy link
Contributor

dependecies.js wasn't shipped into 0.7.0 - it's experimental. I have removed decencies check 9564649

Will rewrite this later with exec and create PR

@n-riesco
Copy link
Collaborator Author

@slavaGanzin You're right, I've just check and it seems to install:

$ apm install Hydrogen
Installing Hydrogen to /home/user/.atom/packages ✓

but now Hydrogen doesn't seem to load, because of the IPython version:

Unexpected token = SyntaxError: Unexpected token =
    at Object.parse (native)
    at Object.<anonymous> (/home/user/.atom/packages/Hydrogen/lib/kernel-manager.coffee:11:22)
    at Object.memoized [as getAvailableKernels] (/home/user/.atom/packages/Hydrogen/node_modules/lodash/index.js:7912:27)
    at /home/user/.atom/packages/Hydrogen/lib/autocomplete-provider.coffee:6:37
    at Object.<anonymous> (/home/user/.atom/packages/Hydrogen/lib/autocomplete-provider.coffee:5:41)
    at Object.<anonymous> (/home/user/.atom/packages/Hydrogen/lib/autocomplete-provider.coffee:1:1)
    at Module._compile (/home/user/share/atom/resources/app.asar/src/native-compile-cache.js:103:30)
    at Object.defineProperty.value [as .coffee] (/home/user/share/atom/resources/app.asar/src/compile-cache.js:208:21)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (/home/user/share/atom/resources/app.asar/src/native-compile-cache.js:50:27)
    at Object.<anonymous> (/home/user/.atom/packages/Hydrogen/lib/main.coffee:13:24)
    at Object.<anonymous> (/home/user/.atom/packages/Hydrogen/lib/main.coffee:1:1)
    at Module._compile (/home/user/share/atom/resources/app.asar/src/native-compile-cache.js:103:30)
    at Object.defineProperty.value [as .coffee] (/home/user/share/atom/resources/app.asar/src/compile-cache.js:208:21)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (/home/user/share/atom/resources/app.asar/src/native-compile-cache.js:50:27)
    at Package.module.exports.Package.requireMainModule (/home/user/share/atom/resources/app.asar/src/package.js:722:27)
    at Package.module.exports.Package.activateConfig (/home/user/share/atom/resources/app.asar/src/package.js:222:12)
    at PackageManager.<anonymous> (/home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/package-manager.js:55:14)
    at PackageManager.packageHasSettings (/home/user/share/atom/resources/app.asar/node_modules/underscore-plus/node_modules/underscore/underscore.js:658:63)
    at PackageCard.module.exports.PackageCard.hasSettings (/home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/package-card.js:611:34)
    at PackageCard.module.exports.PackageCard.initialize (/home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/package-card.js:205:17)
    at PackageCard.View [as constructor] (/home/user/share/atom/resources/app.asar/node_modules/atom-space-pen-views/node_modules/space-pen/lib/space-pen.js:184:25)
    at new PackageCard (/home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/package-card.js:22:48)
    at InstalledPackagesPanel.module.exports.InstalledPackagesPanel.createPackageCard (/home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/installed-packages-panel.js:337:18)
    at ListView.createView (/home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/installed-packages-panel.js:3:61)
    at ListView.module.exports.ListView.addView (/home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/list-view.js:50:19)
    at /home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/list-view.js:13:24
    at Function.module.exports.Emitter.simpleDispatch (/home/user/share/atom/resources/app.asar/node_modules/event-kit/lib/emitter.js:25:14)
    at Emitter.module.exports.Emitter.emit (/home/user/share/atom/resources/app.asar/node_modules/event-kit/lib/emitter.js:125:28)
    at List.module.exports.List.setItems (/home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/list.js:42:22)
    at /home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/installed-packages-panel.js:284:28(anonymous function) @ /home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/installed-packages-panel.js:298
/home/user/share/atom/resources/app.asar/node_modules/settings-view/lib/installed-packages-panel.js:299 Uncaught (in promise) TypeError: Cannot read property 'hide' of undefined(…)

@n-riesco n-riesco changed the title Hydrogen v0.7.0 install fails Hydrogen v0.7.0 incompatible with Ubuntu 14.04 LTS (IPython v1.2.1) Feb 24, 2016
@n-riesco
Copy link
Collaborator Author

@slavaGanzin

I haven't tested the code below, but I was hoping to have the option to define kernelspecs in the Hydrogen settings:

    getAvailableKernels: _.memoize ->
        availableKernels = []

        try
            out = child_process.spawnSync('jupyter',['kernelspec','list', '--json']).stdout.toString()
            specs = _.pluck(JSON.parse(out).kernelspecs, 'spec')
            availableKernels = _.union availableKernels specs
        catch

        try
            out = child_process.spawnSync('ipython',['kernelspec','list', '--json']).stdout.toString()
            specs = _.pluck(JSON.parse(out).kernelspecs, 'spec')
            availableKernels = _.union availableKernels specs
        catch

        try
            out = @getConfigJson('kernelspecs')
            specs = _.pluck(JSON.parse(out).kernelspecs, 'spec')
            availableKernels = _.union availableKernels specs
        catch

        return availableKernels

@slavaGanzin
Copy link
Contributor

jupyter kernelspec substitute functionality ipython kernelspec so it's fallback and shouldn't merged together. #163

Why you need self-defined kernelspecs?

@n-riesco
Copy link
Collaborator Author

Because in Ubuntu 14.04 both jupyter kernelspec and ipython kernelspec fail.

Having the option to define kernelspecs in the Hydrogen settings not only helps workaround this issue, but also helps with issue #38 .

@slavaGanzin
Copy link
Contributor

And how your ipython installation works than?
Maybe you have no ipython or jupyter in your PATH?
Or you have outdated version of ipython?

@n-riesco
Copy link
Collaborator Author

I've checked and the code below works for me:

    getAvailableKernels: _.memoize ->
        availableKernels = []

        try
            out = child_process.spawnSync('jupyter',['kernelspec','list', '--json']).stdout.toString()
            specs = _.pluck(JSON.parse(out).kernelspecs, 'spec')
            availableKernels = _.union(availableKernels, specs)
        catch
            try
                out = child_process.spawnSync('ipython',['kernelspec','list', '--json']).stdout.toString()
                specs = _.pluck(JSON.parse(out).kernelspecs, 'spec')
                availableKernels = _.union(availableKernels, specs)
            catch

        try
            out = @getConfigJson('kernelspecs')
            specs = _.pluck(out, 'spec')
            availableKernels = _.union(availableKernels, specs)
        catch

        return availableKernels
module.exports = Hydrogen =
    config:
        kernelspecs:
            title: "Kernel Specs"
            description: 'Kernel specs as reported by:

                            $ jupyter kernelspecs list --json

                          E.g.:

                            {
                              "ijavascript": {
                                "spec": {
                                  "display_name": "IJavascript",
                                  "env": {},
                                  "argv": [
                                    "node",
                                    "/home/user/node_modules/ijavascript/lib/kernel.js",
                                    "--protocol=5.0",
                                    "{connection_file}"
                                  ],
                                  "language": "javascript"
                                },
                                "resources_dir": "/home/user/node_modules/ijavascript/images"
                              }
                            }'
            type: 'string'
            default: '{}'

@n-riesco
Copy link
Collaborator Author

@slavaGanzin IPython v1.2.1 doesn't recognise the option kernelspec:

$ ipython --version
1.2.1
$ ipython kernelspec list --json
=========
 IPython
=========

Tools for Interactive Computing in Python
=========================================

    A Python shell with automatic history (input and output), dynamic object
    introspection, easier configuration, command completion, access to the
    system shell and more.  IPython can also be embedded in running programs.

Usage

    ipython [subcommand] [options] [-c cmd | -m mod | file] [--] [arg] ...

    If invoked with no options, it executes the file and exits, passing the
    remaining arguments to the script, just as if you had specified the same
    command with python. You may need to specify `--` before args to be passed
    to the script, to prevent IPython from attempting to parse them. If you
    specify the option `-i` before the filename, it will enter an interactive
    IPython session after running the script, rather than exiting. Files ending
    in .py will be treated as normal Python, but files ending in .ipy can
    contain special IPython syntax (magic commands, shell expansions, etc.).

    Almost all configuration in IPython is available via the command-line. Do
    `ipython --help-all` to see all available options.  For persistent
    configuration, look into your `ipython_config.py` configuration file for
    details.

    This file is typically installed in the `IPYTHONDIR` directory, and there
    is a separate configuration directory for each profile. The default profile
    directory will be located in $IPYTHONDIR/profile_default. For Linux users,
    IPYTHONDIR defaults to `$HOME/.config/ipython`, and for other Unix systems
    to `$HOME/.ipython`.  For Windows users, $HOME resolves to C:\Documents
    and Settings\YourUserName in most instances.

    To initialize a profile with the default configuration file, do::

      $> ipython profile create

    and start editing `IPYTHONDIR/profile_default/ipython_config.py`

    In IPython's documentation, we will refer to this directory as
    `IPYTHONDIR`, you can change its default location by creating an
    environment variable with this name and setting it to the desired path.

    For more information, see the manual available in HTML and PDF in your
    installation, or online at http://ipython.org/documentation.html.

Subcommands
-----------

Subcommands are launched as `ipython cmd [args]`. For information on using
subcommand 'cmd', do: `ipython cmd -h`.

locate
    print the path to the IPython dir
profile
    Create and manage IPython profiles.
console
    Launch the IPython terminal-based Console.
kernel
    Start a kernel without an attached frontend.
notebook
    Launch the IPython HTML Notebook Server.
nbconvert
    Convert notebooks to/from other formats.
qtconsole
    Launch the IPython Qt Console.
history
    Manage the IPython history database.

Options
-------

Arguments that take values are actually convenience aliases to full
Configurables, whose aliases are listed on the help line. For more information
on full configurables, see '--help-all'.

--no-autoindent
    Turn off autoindenting.
--autoedit-syntax
    Turn on auto editing of files with syntax errors.
--deep-reload
    Enable deep (recursive) reloading by default. IPython can use the
    deep_reload module which reloads changes in modules recursively (it
    replaces the reload() function, so you don't need to change anything to
    use it). deep_reload() forces a full reload of modules whose code may
    have changed, which the default reload() function does not.  When
    deep_reload is off, IPython will use the normal reload(), but
    deep_reload will still be available as dreload(). This feature is off
    by default [which means that you have both normal reload() and
    dreload()].
--confirm-exit
    Set to confirm when you try to exit IPython with an EOF (Control-D
    in Unix, Control-Z/Enter in Windows). By typing 'exit' or 'quit',
    you can force a direct exit without any confirmation.
--pylab
    Pre-load matplotlib and numpy for interactive use with
    the default matplotlib backend.
--matplotlib
    Configure matplotlib for interactive use with
    the default matplotlib backend.
--term-title
    Enable auto setting the terminal title.
--classic
    Gives IPython a similar feel to the classic Python prompt.
--autoindent
    Turn on autoindenting.
--no-automagic
    Turn off the auto calling of magic commands.
--banner
    Display a banner upon starting IPython.
--automagic
    Turn on the auto calling of magic commands. Type %%magic at the
    IPython  prompt  for  more information.
--no-deep-reload
    Disable deep (recursive) reloading by default.
--no-term-title
    Disable auto setting the terminal title.
--nosep
    Eliminate all spacing between prompts.
-i
    If running code from the command line, become interactive afterwards.
    Note: can also be given simply as '-i.'
--debug
    set log level to logging.DEBUG (maximize logging output)
--pprint
    Enable auto pretty printing of results.
--no-autoedit-syntax
    Turn off auto editing of files with syntax errors.
--quiet
    set log level to logging.CRITICAL (minimize logging output)
--no-color-info
    Disable using colors for info related things.
--color-info
    IPython can display information about objects via a set of func-
    tions, and optionally can use colors for this, syntax highlighting
    source code and various other elements.  However, because this
    information is passed through a pager (like 'less') and many pagers get
    confused with color codes, this option is off by default.  You can test
    it and turn it on permanently in your ipython_config.py file if it
    works for you.  Test it and turn it on permanently if it works with
    your system.  The magic function %%color_info allows you to toggle this
    interactively for testing.
--init
    Initialize profile with default config files.  This is equivalent
    to running `ipython profile create <profile>` prior to startup.
--no-pdb
    Disable auto calling the pdb debugger after every exception.
--quick
    Enable quick startup with no config files.
--no-confirm-exit
    Don't prompt the user when exiting.
--pydb
    Use the third party 'pydb' package as debugger, instead of pdb.
    Requires that pydb is installed.
--pdb
    Enable auto calling the pdb debugger after every exception.
--no-pprint
    Disable auto pretty printing of results.
--no-banner
    Don't display a banner upon starting IPython.
--profile=<Unicode> (BaseIPythonApplication.profile)
    Default: u'default'
    The IPython profile to use.
--pylab=<CaselessStrEnum> (InteractiveShellApp.pylab)
    Default: None
    Choices: ['auto', 'gtk', 'inline', 'osx', 'qt', 'qt4', 'tk', 'wx']
    Pre-load matplotlib and numpy for interactive use, selecting a particular
    matplotlib backend and loop integration.
--matplotlib=<CaselessStrEnum> (InteractiveShellApp.matplotlib)
    Default: None
    Choices: ['auto', 'gtk', 'inline', 'osx', 'qt', 'qt4', 'tk', 'wx']
    Configure matplotlib for interactive use with the default matplotlib
    backend.
--colors=<CaselessStrEnum> (InteractiveShell.colors)
    Default: 'LightBG'
    Choices: ('NoColor', 'LightBG', 'Linux')
    Set the color scheme (NoColor, Linux, or LightBG).
--cache-size=<Integer> (InteractiveShell.cache_size)
    Default: 1000
    Set the size of the output cache.  The default is 1000, you can change it
    permanently in your config file.  Setting it to 0 completely disables the
    caching system, and the minimum value accepted is 20 (if you provide a value
    less than 20, it is reset to 0 and a warning is issued).  This limit is
    defined because otherwise you'll spend more time re-flushing a too small
    cache than working
--logfile=<Unicode> (InteractiveShell.logfile)
    Default: ''
    The name of the logfile to use.
--profile-dir=<Unicode> (ProfileDir.location)
    Default: u''
    Set the profile location directly. This overrides the logic used by the
    `profile` option.
-c <Unicode> (InteractiveShellApp.code_to_run)
    Default: ''
    Execute the given command string.
--autocall=<Enum> (InteractiveShell.autocall)
    Default: 0
    Choices: (0, 1, 2)
    Make IPython automatically call any callable object even if you didn't type
    explicit parentheses. For example, 'str 43' becomes 'str(43)' automatically.
    The value can be '0' to disable the feature, '1' for 'smart' autocall, where
    it is not applied if there are no more arguments on the line, and '2' for
    'full' autocall, where all callable objects are automatically called (even
    if no arguments are present).
--ipython-dir=<Unicode> (BaseIPythonApplication.ipython_dir)
    Default: u'/home/nriesco/.config/ipython'
    The name of the IPython directory. This directory is used for logging
    configuration (through profiles), history storage, etc. The default is
    usually $HOME/.ipython. This options can also be specified through the
    environment variable IPYTHONDIR.
--gui=<CaselessStrEnum> (InteractiveShellApp.gui)
    Default: None
    Choices: ('glut', 'gtk', 'gtk3', 'none', 'osx', 'pyglet', 'qt', 'qt4', 'tk', 'wx')
    Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk3',
    'none', 'osx', 'pyglet', 'qt', 'qt4', 'tk', 'wx').
--logappend=<Unicode> (InteractiveShell.logappend)
    Default: ''
    Start logging to the given file in append mode.
-m <Unicode> (InteractiveShellApp.module_to_run)
    Default: ''
    Run the module as a script.
--log-level=<Enum> (Application.log_level)
    Default: 30
    Choices: (0, 10, 20, 30, 40, 50, 'DEBUG', 'INFO', 'WARN', 'ERROR', 'CRITICAL')
    Set the log level by value or name.
--ext=<Unicode> (InteractiveShellApp.extra_extension)
    Default: ''
    dotted module name of an IPython extension to load.
--config=<Unicode> (BaseIPythonApplication.extra_config_file)
    Default: u''
    Path to an extra config file to load.
    If specified, load this config file in addition to any other IPython config.

To see all available configurables, use `--help-all`

Examples
--------

    ipython --matplotlib       # enable matplotlib integration
    ipython --matplotlib=qt    # enable matplotlib integration with qt4 backend

    ipython --log-level=DEBUG  # set logging to DEBUG
    ipython --profile=foo      # start with profile foo

    ipython qtconsole          # start the qtconsole GUI application
    ipython help qtconsole     # show the help for the qtconsole subcmd

    ipython console            # start the terminal-based console application
    ipython help console       # show the help for the console subcmd

    ipython notebook           # start the IPython notebook
    ipython help notebook      # show the help for the notebook subcmd

    ipython profile create foo # create profile foo w/ default config files
    ipython help profile       # show the help for the profile subcmd

    ipython locate             # print the path to the IPython directory
    ipython locate profile foo # print the path to the directory for profile `foo`

    ipython nbconvert           # convert notebooks to/from other formats

[TerminalIPythonApp] CRITICAL | Bad config encountered during initialization:
[TerminalIPythonApp] CRITICAL | Unrecognized flag: '--json'

n-riesco added a commit to n-riesco/hydrogen that referenced this issue Feb 24, 2016
* Added `kernelspec` setting.
@slavaGanzin
Copy link
Contributor

#177 Play with this branch.

kernelspecs option should work too. How would you generate it?

@slavaGanzin
Copy link
Contributor

#177 Should fix it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants