[解決済み] KeyError / フリーズしたimportlib._bootstrapがspyderの2つ目のライブラリインポートでエラーになる。
2022-02-16 07:07:59
質問
を受け取る。
File " <frozen importlib._bootstrap_external> ", line 978, in _get_parent_path
KeyError: 'python_library'
2回目にspyderでサブフォルダからライブラリをインポートするとエラーが発生するが、1回目(spyderを再起動した後)またはspyderの外では正常に動作する。
そのコードとは
from python_library.tools.test_lib import test_func
test_func()
ここで、test_lib.pyは単に
def test_func():
print('Hello!')
そして、その出力は
runfile('/home/user/Desktop/test.py', wdir='/home/user/Desktop')
Hello!
runfile('/home/user/Desktop/test.py', wdir='/home/user/Desktop')
Reloaded modules: python_library, python_library.tools.test_lib
Traceback (most recent call last):
File "< ipython-input-2-e750fd08988c >", line 1, in <module>
runfile('/home/user/Desktop/test.py', wdir='/home/user/Desktop')
File "/home/user/anaconda3/envs/qutip/lib/python3.6/site-packages/spyder_kernels/customize/spydercustomize.py", line 678, in runfile
execfile(filename, namespace)
File "/home/user/anaconda3/envs/qutip/lib/python3.6/site-packages/spyder_kernels/customize/spydercustomize.py", line 106, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/home/user/Desktop/test.py", line 1, in <module>
from python_library.tools.test_lib import test_func
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 951, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 894, in _find_spec
File "<frozen importlib._bootstrap_external>", line 1157, in find_spec
File "<frozen importlib._bootstrap_external>", line 1123, in _get_spec
File "<frozen importlib._bootstrap_external>", line 994, in __iter__
File "<frozen importlib._bootstrap_external>", line 982, in _recalculate
File "<frozen importlib._bootstrap_external>", line 978, in _get_parent_path
KeyError: 'python_library'
ライブラリがサブフォルダにない場合、エラーは発生しません。
from python_library.test_lib2 import test_func
は任意の頻度で実行されます。しかし、サブフォルダがないのは非常に困るほどの機能があります。
これはspyder-3.3.2でのことですが、それ以前のバージョン3.3.0-py36_1でも発生しました。python のバージョンは 3.6.4 で、spyder は anaconda 経由でインストール・更新し、「python_library」は setup.py (setuptools バージョン 40.6.3, バージョン 39.2.0-py36_0 でも発生しました) でインストールされました。
注:同じエラーが発生したのは、問題の Python モジュールのインポート時に発生する KeyError を解決するにはどうすればよいですか? しかし、この質問には答えがなく、また、spyderタグもありません。
どのように解決するのですか?
解決策は、空の
__init__.py
ファイルは tools サブフォルダ内にあり、python_library スーパーフォルダ内にのみあります。ファイルを追加する
__init__.py
をtoolsに入れるとうまくいきました。
関連
-
Pythonの非常に便利な2つのデコレーターを解説
-
PythonによるLeNetネットワークモデルの学習と予測
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Python入門 openを使ったファイルの読み書きの方法
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
python string splicing.join()とsplitting.split()の説明
-
Pythonによるjieba分割ライブラリ
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
PythonによるExcelファイルの一括操作の説明
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。