Python 从x导入y模块NotFoundError:没有名为';x';
我已将应用程序的API密钥包含在名为privateinfo.py的文件中,但出于安全考虑,.git忽略了它。我将密钥信息导入到init.py文件中,但当我对应用程序进行单元测试时,收到此错误, “来自.privateinfound导入密钥模块NotFoundError:没有名为'app.privateinfound'的模块” 这就是我将密钥导入init.py文件的方式Python 从x导入y模块NotFoundError:没有名为';x';,python,flask,python-unittest,Python,Flask,Python Unittest,我已将应用程序的API密钥包含在名为privateinfo.py的文件中,但出于安全考虑,.git忽略了它。我将密钥信息导入到init.py文件中,但当我对应用程序进行单元测试时,收到此错误, “来自.privateinfound导入密钥模块NotFoundError:没有名为'app.privateinfound'的模块” 这就是我将密钥导入init.py文件的方式 from .privateinfo import key 以下是如何设置我的目录的照片: 正如您所看到的,privatein
from .privateinfo import key
以下是如何设置我的目录的照片:
正如您所看到的,privateinfo文件和init文件都在app目录中,而.gitignore在根目录中。代码问题:您必须单独运行该文件,可能是为了测试。在这种情况下,python不会将其识别为模块 这里有一个解决方案 写入:
来自app.privateinfo导入密钥
注意:请记住,只有当您从外部运行它时,它才会起作用。i、 e.您在其中编写上述语句的文件必须是config、forms、models、run
中的任何文件
要单独运行文件,请执行以下操作:
假设您在文件refactor.py
中编写了上述import语句,并希望对其进行测试。只需在app
外部创建一个文件runner.py
,然后编写import-app.refactor
。现在执行runner.py
说明:这将运行
重构
,同时将应用程序
视为模块,因此,您的导入将工作。在您的应用程序中\uuuuuuuuuuuuuuuuuuupy
添加自.app导入*
然后,在测试文件中,您可以导入应用程序
包。测试中的\uuuu init\uuuu.py
可以为空;它将测试定义为一个不同的包
例如,在测试文件中,您可以将import语句从app.privateinfo import key更改为
app
和tests
被视为不同的模块;当您导入另一个模块时,您将导入其\uuuu init\uuuuu.py
中定义的内容。如果你的应用程序\uuuuu init\uuuuuuuuupy
为空,你基本上不会从该模块加载任何内容。1)你可以分享代码片段吗,这将更容易帮助你2)尝试从中加载。导入密钥
我在问题中列出了代码我的问题是我正在对代码进行单元测试(未运行应用程序)并收到上述错误。我需要将密钥导入init文件中,因为这是使用API的地方。init文件和privateinfo文件都在app目录中,这就是为什么我将其格式化为相对导入的“.privateinfo import key”。。那就简单了。只需从根目录运行:python3-m unittest
。