TransWikia.com

コードをJupyter Notebookのファイルに保存してimportするとエラーになる

スタック・オーバーフロー Asked on September 1, 2021

「みんなのPython」を参考にPythonの勉強をしているのですが、下記のコードを打ち込んでも、参考書に書いてある通りになりません。どこが間違っているでしょうか。
(juypter notebookを使って行っています)

#!/usr/bin/env python 

class StrDict(dict):
    def __init__(self):
        pass
    def __setitem__(self,key,value):
        if not isinstsnce(key,str):
            raise ValueError("Key must be str or unicode.")
        dict.__setitem__(self,key.value)

これをstrdict.pyとjupyter notebookのファイルに保存して、

from strdict import StrDict

と次のセルで打ち込んだのですが、

NameError                                 Traceback (most recent call last)
<ipython-input-1-d320d56b1f78> in <module>()
----> 1 from strdict import StrDict

~strdict.py in <module>()
      3   {
      4    "cell_type": "code",
----> 5    "execution_count": null,
      6    "metadata": {},
      7    "outputs": [],

NameError: name 'null' is not defined

となりました。どうすればよいのでしょう??

2 Answers

Jupyterでテキストファイルを作成する方法

Jupyter には Notebook(ipynb形式)ではないテキストファイルを作成・編集する方法もあるようです。書籍はこれを前提としているかも知れないので、既にある回答 の補足とします。

新規にNotebookではないファイルを作成する際は、Notebook: ではなく Other: から Text File を選択します。

新規ファイル作成メニュー

上のようにテキストファイルを作成するか、既存のテキストファイルをクリックすると編集画面に移ります。Notebook を開いた際とは画面構成が異なるので、区別できると思います。

テキストファイル編集画面

(操作方法やスクリーンショットはJupyter 4.4.0 のものです)

Answered by mjy on September 1, 2021

これをstrdict.pyとjupyter notebookのファイルに保存して、

ここが違っています。
Jupyter Notebook上で作れるのは、ipynb形式のファイルです。
strdict.py を作るにはJupyter Notebook以外のテキストエディタ等を使って作ってみて下さい。


もうすこし詳しく書くと、Jupyter Notebookの保存形式 ipynb の中身はjsonフォーマットです。これをPythonのimport文で読み込もうとすると、PythonがPythonの文法としてjsonフォーマットを解釈しようとします。Pythonの文法や組み込み変数に null は存在しないので、 NameError: name 'null' is not defined というエラーが発生しています。

Answered by Takayuki SHIMIZUKAWA on September 1, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP