ipynb icon indicating copy to clipboard operation
ipynb copied to clipboard

incorrect version or language

Open JoyeBright opened this issue 4 years ago • 8 comments

I have strived to import an external ipynb, but I got the following error:

ImportError: Could not import /content/.ipynb for ipynb.fs.full.: incorrect version or language

I was wondering if I could know that you have ever experienced the same issue, please!

NB: I am running the codes on the Google Colab.

Thanks in advance

JoyeBright avatar May 21 '20 14:05 JoyeBright

Unable to import ipynb as it gives the error: "ipynb\fs\full_init_.py", line 39, in get_code raise ImportError('Could not import {path} for {fn}: incorrect version or language"

Is this ipynb import supported only for some python versions?

AnupamSaraph avatar Mar 15 '21 07:03 AnupamSaraph

Same issue here using Python 3.8.5 on macOS 10.15.7. Perhaps it has to do with me using "/usr/local/bin/python3"? I'm working in VS Code.

rajkundu avatar Mar 26 '21 02:03 rajkundu

Btw, my workaround was to use import-ipynb instead.

olaviinha avatar Mar 26 '21 07:03 olaviinha

Ah, thank you - I ended up finding importnb and working with that, but I appreciate you sharing! :)

rajkundu avatar Mar 26 '21 07:03 rajkundu

I too experienced this error. I found that the validate_nb() method in "utils.py" is searching the within notebook's kernelspec dictionary for the dictionary key language. My particular notebook did not have this key. It only has name and display_name, which would need to be further parsed to determine that language_name == 'python'

"metadata": {
  "kernelspec": {
   "name": "python394jvsc74a57bd0be098d32f57b1a2b9aacbade952c5e427778cda6d97bd24f3e84e87f053b8dae",
   "display_name": "Python 3.9.4 64-bit"
  }

abergerSRS avatar May 17 '21 18:05 abergerSRS

It looks like pull request #51 will fix this issue

abergerSRS avatar May 20 '21 21:05 abergerSRS

It would seem that this issue is still present on Google Colab. PR #51 doesn't seem to have been merged. The latest commit on main branch in this repo was on Oct 2017. To anyone reading this, I think this repo may not be active at the moment.

Versions:

Python 3.7.11

ipynb 0.5.1

Example:

# asdf.ipynb
def foo(a,b):
    print(a,b)
# abc.ipynb
!pip install ipynb
from google.colab import drive
drive.mount('/content/drive/')
import sys
sys.path.append('/content/drive/MyDrive/Colab Notebooks/')
import ipynb.fs.defs.asdf

gives:

ImportError                               Traceback (most recent call last)

<ipython-input-6-1be176fa1f93> in <module>()
----> 1 import ipynb.fs.full.asdf

/usr/local/lib/python3.7/dist-packages/ipynb/fs/full/__init__.py in get_code(self, fullname)
     39                     raise ImportError('Could not import {path} for {fn}: incorrect version or language'.format(
     40                         path=self.path,
---> 41                         fn=fullname
     42                     ))
     43                 return self.source_to_code(code_from_ipynb(nb), self.path)

ImportError: Could not import /content/drive/MyDrive/Colab Notebooks/asdf.ipynb for ipynb.fs.full.asdf: incorrect version or language

davidleejy avatar Sep 15 '21 18:09 davidleejy

(probably not recommended)

Following on @abergerSRS answer, I looked at what the utils/validate_nb(nb) function was doing and a quick (and certainly dirty) fix is open the ipynb metadata (open it using notes, for example) adding language to a dict like below.

{
  ...
   "metadata": {
     ...
    "kernelspec": {
      ...
     "language": "python" # <--- added line
    }
  ...
}

I do not know why this check is being made, and I am unaware of possible side effects. Therefore, I do not responsibilize myself if something goes wrong.

felipewhitaker avatar Oct 27 '21 18:10 felipewhitaker