【问题标题】:KeyError when trying to import simplistic custom package - Seemingly Inconsistent尝试导入简单的自定义包时出现 KeyError - 看似不一致
【发布时间】:2022-10-19 12:23:49
【问题描述】:

我正在处理包上的 python Institute 模块,但在尝试导入模块时出现错误,但仅在特定情况下。文件夹结构在随附的照片中可见。 :

C:\Users\Luke\py\packages

Folder Pathway

尝试运行以下代码时(导入特定模块并运行其中的函数):

from sys import path

path.append('..\\packages')

import extra.good.best.sigma
from extra.good.best.tau import FunT

print(extra.good.best.sigma.FunS())
print(FunT()) 

我收到错误消息:“KeyError:'extra'”

但是,在运行以下代码时,它可以正常工作:

from sys import path
path.append('..\\packages')

import extra.iota
print(extra.iota.FunI()) 

注意 - 各种模块本身完全相同,唯一的区别是它们返回自己的特定模块名称,例如 Iota 模块代码是:

def FunI():
    return "Iota"

if __name__ == "__main__":
    print("I prefer to be a module") 

是否有人能够发现导致错误的差异或有调试建议?我对编码还是很陌生,所以任何帮助都将不胜感激。谢谢!

【问题讨论】:

  • 哪条线提高了KeyError: 'extra'?当尝试访问存储在没有该键的字典键中的值时,会引发此错误。尝试检测您要访问的字典是哪个字典,并且该字典没有键 'extra'
  • 在控制台中,它提供了以下错误消息: * File "<frozen importlib._bootstrap_external>", line 1099, in _get_parent_path KeyError: 'extra' * - 我在这个站点上寻找过类似的错误消息,大多数人都报告了这个问题作为一个初始化目标文件夹中需要 .py 文件,但这似乎对我的工作没有帮助。我实际上也无法破译错误消息以找到有问题的字典,所以我有点难过

标签: import package keyerror


【解决方案1】:

我遇到了同样的问题,在 python 学院培训模块中也有同样的例子。

我发现如果我直接通过 python3 运行 main2.py ,它工作正常。当 main2.py 在 Spyder 的 IPython shell 中运行时,我遇到与您相同的错误。

为了让它在 Spyder 中工作,我必须添加一个在里面.py 到我的“extra”文件夹层次结构中的每个子文件夹,然后右键单击 IPython shell 以退出它,并让 Spyder 启动一个新的 shell。此时 Spyder 可以成功运行 main2.py。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 2021-11-02
    • 2021-09-03
    相关资源
    最近更新 更多