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

IndexError in start_ipython when sys.argv is empty #11926

Open
mroethke opened this issue Oct 23, 2019 · 3 comments
Open

IndexError in start_ipython when sys.argv is empty #11926

mroethke opened this issue Oct 23, 2019 · 3 comments
Labels
Milestone

Comments

@mroethke
Copy link

When sys.argv is empty and start_ipython is called the following exception occurs:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.7/site-packages/IPython/__init__.py", line 125, in start_ipython
    return launch_new_instance(argv=argv, **kwargs)
  File "/usr/lib/python3.7/site-packages/traitlets/config/application.py", line 663, in launch_instance
    app.initialize(argv)
  File "</usr/lib/python3.7/site-packages/decorator.py:decorator-gen-113>", line 2, in initialize
  File "/usr/lib/python3.7/site-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/lib/python3.7/site-packages/IPython/terminal/ipapp.py", line 308, in initialize
    super(TerminalIPythonApp, self).initialize(argv)
  File "</usr/lib/python3.7/site-packages/decorator.py:decorator-gen-7>", line 2, in initialize
  File "/usr/lib/python3.7/site-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/lib/python3.7/site-packages/IPython/core/application.py", line 450, in initialize
    self.parse_command_line(argv)
  File "/usr/lib/python3.7/site-packages/IPython/terminal/ipapp.py", line 303, in parse_command_line
    return super(TerminalIPythonApp, self).parse_command_line(argv)
  File "</usr/lib/python3.7/site-packages/decorator.py:decorator-gen-4>", line 2, in parse_command_line
  File "/usr/lib/python3.7/site-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/lib/python3.7/site-packages/traitlets/config/application.py", line 538, in parse_command_line
    self.cli_config = deepcopy(loader.load_config())
  File "/usr/lib/python3.7/site-packages/traitlets/config/loader.py", line 745, in load_config
    self._create_parser(aliases, flags)
  File "/usr/lib/python3.7/site-packages/traitlets/config/loader.py", line 757, in _create_parser
    self.parser = ArgumentParser(*self.parser_args, **self.parser_kw)
  File "/usr/lib/python3.7/argparse.py", line 1641, in __init__
    prog = _os.path.basename(_sys.argv[0])
IndexError: list index out of range

This can be reproduced with this slightly contrived example:

import sys
import IPython
sys.argv = [] 
IPython.start_ipython(argv=[])

As shown in the example it even happens when the argument argv is an empty list, even though the documentation says this disables argument parsing entirely.

System Info:

{'commit_hash': '<not found>',
 'commit_source': '(none found)',
 'default_encoding': 'UTF-8',
 'ipython_path': '/usr/lib/python3.7/site-packages/IPython',
 'ipython_version': '7.8.0',
 'os_name': 'posix',
 'platform': 'Linux-5.3.6-arch1-1-ARCH-x86_64-with-arch',
 'sys_executable': '/usr/bin/python',
 'sys_platform': 'linux',
 'sys_version': '3.7.4 (default, Oct  4 2019, 06:57:26) \n[GCC 9.2.0]'}

However I can reproduce this with IPython versions as old as 4.2.1

@Carreau
Copy link
Member

Carreau commented Oct 31, 2019

Hum, it's contrived but I believe this is an actual bug, though it will be in tartlets; not in IPython itself.

@mroethke
Copy link
Author

mroethke commented Nov 1, 2019

The example I provided is contrived yes, but that just the result of condensing it to its minimal form.
I did actually encountered this in in an environment where python was embedded with ipython as an interactive shell for some native functions. sys.argv is empty in that environment.

@MrMino
Copy link
Member

MrMino commented Mar 27, 2022

Still reproducible on IPython 8.1.1 / traitlets 5.1.1.

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

No branches or pull requests

3 participants