dataframe_image icon indicating copy to clipboard operation
dataframe_image copied to clipboard

NoSuchKernel Error

Open alessiamarcolini opened this issue 4 years ago • 3 comments

Trying to convert a notebook to pdf, .convert raises a NoSuchKernel exception. I'm inside a conda environment, so I don't have any Python bound to python3.

Steps to reproduce:

import dataframe_image as dfi
dfi.convert('notebook.ipynb', to='pdf')

gives:

---------------------------------------------------------------------------
NoSuchKernel                              Traceback (most recent call last)
<ipython-input-27-1f6fca5272c8> in <module>
----> 1 dfi.convert('Tutorial-QuickStart.ipynb', to='pdf')

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/dataframe_image/_convert.py in convert(filename, to, max_rows, max_cols, ss_width, ss_height, resize, chrome_path, limit)
    193     c = Converter(Path(filename), to, max_rows, max_cols, ss_width, ss_height,
    194                  resize, chrome_path, limit)
--> 195     c.convert()

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/dataframe_image/_convert.py in convert(self)
    128
    129     def convert(self):
--> 130         self.execute_notebook()
    131         for kind in self.to:
    132             getattr(self, f"to_{kind}")()

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/dataframe_image/_convert.py in execute_notebook(self)
     91             timeout=600, kernel_name="python3", allow_errors=True, extra_arguments=extra_arguments
     92         )
---> 93         ep.preprocess(self.nb, resources)
     94
     95     def to_pdf(self):

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/nbconvert/preprocessors/execute.py in preprocess(self, nb, resources, km)
    401             resources = {}
    402
--> 403         with self.setup_preprocessor(nb, resources, km=km):
    404             self.log.info("Executing notebook with kernel: %s" % self.kernel_name)
    405             nb, resources = super(ExecutePreprocessor, self).preprocess(nb, resources)

//anaconda/envs/jupyter_to_medium/lib/python3.7/contextlib.py in __enter__(self)
    110         del self.args, self.kwds, self.func
    111         try:
--> 112             return next(self.gen)
    113         except StopIteration:
    114             raise RuntimeError("generator didn't yield") from None

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/nbconvert/preprocessors/execute.py in setup_preprocessor(self, nb, resources, km, **kwargs)
    343         if km is None:
    344             kwargs["cwd"] = path
--> 345             self.km, self.kc = self.start_new_kernel(**kwargs)
    346             try:
    347                 # Yielding unbound args for more easier understanding and downstream consumption

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/nbconvert/preprocessors/execute.py in start_new_kernel(self, **kwargs)
    289         if km.ipykernel and self.ipython_hist_file:
    290             self.extra_arguments += ['--HistoryManager.hist_file={}'.format(self.ipython_hist_file)]
--> 291         km.start_kernel(extra_arguments=self.extra_arguments, **kwargs)
    292
    293         kc = km.client()

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/manager.py in start_kernel(self, **kw)
    299              and launching the kernel (e.g. Popen kwargs).
    300         """
--> 301         kernel_cmd, kw = self.pre_start_kernel(**kw)
    302
    303         # launch the kernel subprocess

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/manager.py in pre_start_kernel(self, **kw)
    252         # build the Popen cmd
    253         extra_arguments = kw.pop('extra_arguments', [])
--> 254         kernel_cmd = self.format_kernel_cmd(extra_arguments=extra_arguments)
    255         env = kw.pop('env', os.environ).copy()
    256         # Don't allow PYTHONEXECUTABLE to be passed to kernel process.

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/manager.py in format_kernel_cmd(self, extra_arguments)
    176             cmd = self.kernel_cmd + extra_arguments
    177         else:
--> 178             cmd = self.kernel_spec.argv + extra_arguments
    179
    180         if cmd and cmd[0] in {'python',

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/manager.py in kernel_spec(self)
     82     def kernel_spec(self):
     83         if self._kernel_spec is None and self.kernel_name != '':
---> 84             self._kernel_spec = self.kernel_spec_manager.get_kernel_spec(self.kernel_name)
     85         return self._kernel_spec
     86

//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/kernelspec.py in get_kernel_spec(self, kernel_name)
    233         resource_dir = self._find_spec_directory(kernel_name.lower())
    234         if resource_dir is None:
--> 235             raise NoSuchKernel(kernel_name)
    236
    237         return self._get_kernel_spec_by_name(kernel_name, resource_dir)

NoSuchKernel: No such kernel named python3

alessiamarcolini avatar May 11 '20 13:05 alessiamarcolini

Thanks for reporting this.

At the top of your notebook (within the jupyter_to_medium environment) can you run the following and tell me what it says.

import sys sys.executable

You may need to delete your user kernel - https://stackoverflow.com/a/54985829/3707607

On Mon, May 11, 2020 at 9:51 AM Alessia Marcolini [email protected] wrote:

Trying to convert a notebook to pdf, .convert raises a NoSuchKernel exception. I'm inside a conda environment, so I don't have any Python bound to python3.

Steps to reproduce:

import dataframe_image as dfi dfi.convert('notebook.ipynb', to='pdf')

gives:


NoSuchKernel Traceback (most recent call last) in ----> 1 dfi.convert('Tutorial-QuickStart.ipynb', to='pdf') //anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/dataframe_image/_convert.py in convert(filename, to, max_rows, max_cols, ss_width, ss_height, resize, chrome_path, limit) 193 c = Converter(Path(filename), to, max_rows, max_cols, ss_width, ss_height, 194 resize, chrome_path, limit)--> 195 c.convert() //anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/dataframe_image/convert.py in convert(self) 128 129 def convert(self):--> 130 self.execute_notebook() 131 for kind in self.to: 132 getattr(self, f"to{kind}")() //anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/dataframe_image/_convert.py in execute_notebook(self) 91 timeout=600, kernel_name="python3", allow_errors=True, extra_arguments=extra_arguments 92 )---> 93 ep.preprocess(self.nb, resources) 94 95 def to_pdf(self): //anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/nbconvert/preprocessors/execute.py in preprocess(self, nb, resources, km) 401 resources = {} 402--> 403 with self.setup_preprocessor(nb, resources, km=km): 404 self.log.info("Executing notebook with kernel: %s" % self.kernel_name) 405 nb, resources = super(ExecutePreprocessor, self).preprocess(nb, resources) //anaconda/envs/jupyter_to_medium/lib/python3.7/contextlib.py in enter(self) 110 del self.args, self.kwds, self.func 111 try:--> 112 return next(self.gen) 113 except StopIteration: 114 raise RuntimeError("generator didn't yield") from None //anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/nbconvert/preprocessors/execute.py in setup_preprocessor(self, nb, resources, km, **kwargs) 343 if km is None: 344 kwargs["cwd"] = path--> 345 self.km, self.kc = self.start_new_kernel(**kwargs) 346 try: 347 # Yielding unbound args for more easier understanding and downstream consumption //anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/nbconvert/preprocessors/execute.py in start_new_kernel(self, **kwargs) 289 if km.ipykernel and self.ipython_hist_file: 290 self.extra_arguments += ['--HistoryManager.hist_file={}'.format(self.ipython_hist_file)]--> 291 km.start_kernel(extra_arguments=self.extra_arguments, **kwargs) 292 293 kc = km.client() //anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/manager.py in start_kernel(self, **kw) 299 and launching the kernel (e.g. Popen kwargs). 300 """--> 301 kernel_cmd, kw = self.pre_start_kernel(**kw) 302 303 # launch the kernel subprocess//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/manager.py in pre_start_kernel(self, **kw) 252 # build the Popen cmd 253 extra_arguments = kw.pop('extra_arguments', [])--> 254 kernel_cmd = self.format_kernel_cmd(extra_arguments=extra_arguments) 255 env = kw.pop('env', os.environ).copy() 256 # Don't allow PYTHONEXECUTABLE to be passed to kernel process.//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/manager.py in format_kernel_cmd(self, extra_arguments) 176 cmd = self.kernel_cmd + extra_arguments 177 else:--> 178 cmd = self.kernel_spec.argv + extra_arguments 179 180 if cmd and cmd[0] in {'python',//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/manager.py in kernel_spec(self) 82 def kernel_spec(self): 83 if self._kernel_spec is None and self.kernel_name != '':---> 84 self._kernel_spec = self.kernel_spec_manager.get_kernel_spec(self.kernel_name) 85 return self._kernel_spec 86//anaconda/envs/jupyter_to_medium/lib/python3.7/site-packages/jupyter_client/kernelspec.py in get_kernel_spec(self, kernel_name) 233 resource_dir = self._find_spec_directory(kernel_name.lower()) 234 if resource_dir is None:--> 235 raise NoSuchKernel(kernel_name) 236 237 return self._get_kernel_spec_by_name(kernel_name, resource_dir)NoSuchKernel: No such kernel named python3

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/dexplo/dataframe_image/issues/1, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABXEK77G37LXPP2MR3WBLUDRQ77GHANCNFSM4M55VS5Q .

tdpetrou avatar May 11 '20 16:05 tdpetrou

It says: //anaconda/envs/jupyter_to_medium/bin/python

alessiamarcolini avatar May 19 '20 10:05 alessiamarcolini

I just made a big upgrade to this project. Try upgrading to the latest release and try again.

On Tue, May 19, 2020 at 6:35 AM Alessia Marcolini [email protected] wrote:

It says: //anaconda/envs/jupyter_to_medium/bin/python

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/dexplo/dataframe_image/issues/1#issuecomment-630735222, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABXEK75NSM6BYD2XVVBJYRLRSJOFLANCNFSM4M55VS5Q .

tdpetrou avatar May 21 '20 14:05 tdpetrou