WolframResearch / WolframLanguageForJupyter

Wolfram Language kernel for Jupyter notebooks
MIT License
1.03k stars 124 forks source link

configure-jupyter.wls doesn't work(AttributeError: 'Namespace' object has no attribute '_flags') #121

Closed arduinocc04 closed 2 years ago

arduinocc04 commented 2 years ago

I tried to use it on windows. But it doesn't work and terminated with error message below. I added Pause[100]; in configure-jupyter.wls to see error message. would it have some effects to this error?

configure-jupyter.wls: An error has occurred. The desired Wolfram Engine is not in "jupyter kernelspec list."
configure-jupyter.wls: See below for the message that Jupyter returned when attempting to add the Wolfram Engine.
Traceback (most recent call last):
  File "c:\users\user\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\user\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\Scripts\jupyter-kernelspec.EXE\__main__.py", line 7, in <module>
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 844, in launch_instance
    app.initialize(argv)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 87, in inner
    return method(app, *args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 333, in initialize
    self.parse_command_line(argv)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 87, in inner
    return method(app, *args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 684, in parse_command_line
    return self.initialize_subcommand(subc, subargv)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 87, in inner
    return method(app, *args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 603, in initialize_subcommand
    self.subapp.initialize(argv)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 87, in inner
    return method(app, *args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\jupyter_core\application.py", line 225, in initialize
    self.parse_command_line(argv)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\jupyter_client\kernelspecapp.py", line 120, in parse_command_line
    super().parse_command_line(argv)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 87, in inner
    return method(app, *args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\application.py", line 708, in parse_command_line
    self.cli_config = deepcopy(loader.load_config())
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\loader.py", line 847, in load_config
    self._parse_args(argv)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\loader.py", line 906, in _parse_args
    self.parsed_data = self.parser.parse_args(to_parse)
  File "c:\users\user\appdata\local\programs\python\python39\lib\argparse.py", line 1822, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\loader.py", line 770, in parse_known_args
    return super().parse_known_args(args, namespace)
  File "c:\users\user\appdata\local\programs\python\python39\lib\argparse.py", line 1850, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "c:\users\user\appdata\local\programs\python\python39\lib\argparse.py", line 2064, in _parse_known_args
    start_index = consume_optional(start_index)
  File "c:\users\user\appdata\local\programs\python\python39\lib\argparse.py", line 2004, in consume_optional
    take_action(action, args, option_string)
  File "c:\users\user\appdata\local\programs\python\python39\lib\argparse.py", line 1932, in take_action
    action(self, namespace, argument_values, option_string)
  File "c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\loader.py", line 931, in __call__
    namespace._flags.append(self.flag)
AttributeError: 'Namespace' object has no attribute '_flags'
arduinocc04 commented 2 years ago

I solved this problem.
I changed c:\users\user\appdata\local\programs\python\python39\lib\site-packages\traitlets\config\loader.py.

    def __call__(self, parser, namespace, values, option_string=None): #Line 929
        if self.nargs == 0 or values is Undefined:
            namespace._flags.append(self.flag)

to

    def __call__(self, parser, namespace, values, option_string=None): #Line 929
        if self.nargs == 0 or values is Undefined:
            #namespace._flags.append(self.flag)
            pass

and I restarted configure-jupyter.wls. Although I got some error message below, it works.

configure-jupyter.wls: An error has occurred. The desired Wolfram Engine is not in "jupyter kernelspec list."
configure-jupyter.wls: See below for the message that Jupyter returned when attempting to add the Wolfram Engine.
[InstallKernelSpec] Installed kernelspec wolframlanguage13 in C:\ProgramData\jupyter\kernels\wolframlanguage13