我收到了一个
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 version 3.3.0-py36_1版本中。Python版本为3.6.4,Spyder通过anaconda安装和更新,“python_library”通过setup.py安装(setuptools版本为40.6.3,也出现在version 39.2.0-py36_0中)。
注意:同样的错误发生在问题How do I solve a KeyError when importing a python module?中,但该问题没有答案,并且没有标记为spyder相关。