前提・実現したいこと
相対インポートが使えなくなってしまいました。
特定の場面というよりも、Vscodeで実行すると全部エラーがでます。
以下に例を示しましたので、原因のわかる方は教えてほしいです。
ファイルの構造
sample ├── a.py └── b.py
各ファイルの中身
python
1# a.py 2from . import b 3b.hello()
python
1# b.py 2def hello(): 3 print("h")
エラーメッセージ
home sample (work) % python3 -u "/Users/home/study/sample/a.py" Traceback (most recent call last): File "/Users/home/study/sample/a.py", line 1, in <module> from . import b ImportError: attempted relative import with no known parent package
実行環境
vscode
macbook pro
python 3.9.7
試したこと
・それぞれのディレクトリに__init__.pyファイルを追加してみた。
・この記事で同じ階層の関数をインポートする箇所がありました。なので別のディレクトリを作ってから、ファイルの構造と中身を真似して試してみました。
from . import mod1
しかし相変わらず同じようなエラーメッセージが出てきます。
home study (work) % python3 -u "/Users/home/study/my_package/mod2.py" Traceback (most recent call last): File "/Users/home/study/my_package/mod2.py", line 1, in <module> from . import mod1 ImportError: attempted relative import with no known parent package
・パソコンの再起動
・ドットを使わないと普通に結果が表示されます。
python
1# from . import b 2from b import hello 3hello() # h
いままでは相対パスも指定できていたはずなのに、なぜか最近使えなくなりました。
ネットに上がっている情報をそのまま再現しても動かないのでこれは僕のローカル環境の問題だと思うんですけど、検討が全く付きません。
Pythonのバージョンの問題も疑ってみてVscodeで選択できるすべてのPythonインタプリタでも試しましたが同じエラーが出てきます。
なにか心当たりがありましたら何卒ご共助願います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/11 09:23