先日、Pythonの学習をしていてパッケージを作成しました。
読み込む際にエラーになり、ハマったので自分へのメモとして残しておきます
初心者はハマりやすい部分かなと思うので、そういった方はぜひお読みください
エラーの内容
1 2 3 4 |
sample.py, line 10 from 02_lesson_package import utils ^ SyntaxError: invalid decimal literal |
SyntaxErrorなので、パッケージの名前がよろしくないのだろうけど、
_(アンダースコア)って使えなかったっけ???
ちなみにディレクトリ構成は以下です
dir
L sample.py (今回実行したファイル)
L 02_lesson_package
L __init__.py
L utils.py
使用したコード
・sample.py(実行したファイル)
1 2 3 4 |
from 02_lesson_package import utils r = utils.say_twice('hello') print(r) |
・utils.py(使用したモジュール)
1 2 |
def say_twice(word: str): return (word + '!') * 2 |
う~~ん、ちゃんと読み込めてそうだけど、ファイルの命名規則を調べてみるか。
識別子の命名規則
Pythonで識別子(変数、関数、クラスなどの名前)としてざっくり2つのルールがあるらしい
- 大文字小文字のアルファベットと数字、アンダースコアが使える
- 先頭(一文字目)に数字は使えない
今回は「02_lesson_package」と先頭に数字を使ったパッケージだったため、エラー!
厳密な命名規則は下記の記事を参考にしてみてください
Pythonで識別子(変数名など)として有効・無効な名前、命名規則 | note.nkmk.me
Pythonにおいて、識別子(変数、関数、クラスなどの名前)はルールに従って決める必要がある。ルールに沿わない名前は識別子として使えずエラーとなる。 2. 字句解析 - 識別子 (identifier) およびキーワード (keywo ...
識別子(変数名や関数名など)の命名ガイドライン
パッケージの名前を修正して再度実行
「02_lesson_package」->「lesson_package」に修正し、再度実行
1 2 |
> python sample.py hello!hello! |
エラーが出ないようになった!!!
コメント