Ошибка KeyError / frozen importlib._bootstrap при импорте второй библиотеки в spyder - PullRequest
0 голосов
/ 19 декабря 2018

Я получаю ошибку

File " <frozen importlib._bootstrap_external> ", line 978, in _get_parent_path    
KeyError: 'python_library'

, когда я импортирую библиотеку из подпапки второй раз в spyder, но в первый раз (после перезапуска 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, но это также происходило ранее с версией spyder 3.3.0-py36_1.Версия python 3.6.4. Spyder устанавливается и обновляется через anaconda, а python_library - через setup.py (setuptools версии 40.6.3, также имеет место с версией 39.2.0-py36_0).

Примечание: та же ошибка возникла в вопросе Как мне устранить ошибку KeyError при импорте модуля python? , но этот вопрос не имеет ответа, а также тега spyder.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

командная строка:

cd your_python_file_position
touch __init__.py
0 голосов
/ 20 декабря 2018

Решение состояло в том, что в инструментах подпапок не было пустого файла __init__.py, только в суперпапке python_library.Добавление файла __init__.py в инструменты заставило его работать.

...