IPython 无法从模块导入变量

IPython not able to import variables from a module

我在一个名为 secrets.py 的 python 文件中有一个变量,我试图从 IPython 中访问它(具体来说,一个 API 键)。如果我尝试 from secrets import API_KEY,我会收到无法导入变量的错误。然而,有趣的是,标准 python 环境(即终端中的 运行ning python)可以很好地导入变量。标准 python 环境和 IPython 都是来自同一个 directory/virtual 环境的 运行。我不确定这里出了什么问题。任何帮助将不胜感激。

IPython 假定我导入的 secrets.py 是 Python 的原生 secrets.py 而不是我自己制作的。不要弄乱路径变量或解决此问题所需的任何其他方法,只需将我的 secrets.py 重命名为其他名称即可解决问题。我仍然不确定为什么这种行为在正常 python 环境中会有所不同,所以如果有人能解释一下,我洗耳恭听。

编辑:在一些指导下,我弄清楚了为什么他们的行为不同。尽管 IPython 的 sys.path 中有当前工作目录,但它位于 python 的 secrets.py 所在的文件夹之后。所以 IPython 检查了那个文件夹,看到有一个 secrets.py,并假设它就是要从中导入 API 密钥的那个文件夹。而对于正常的 python,CWD 是列表中的第一个条目,因此它找到正确的 API 键没问题。

secrets a Python module 用于“生成适用于管理密码、帐户身份验证、安全令牌和相关秘密等数据的加密强随机数”。问题是 ImportError,这意味着可能存在冲突,因为 Python 不识别 secrets.py 作为您的创建,而是作为标准库模块

解决方案是简单地重命名您的文件,更改其名称。