我有以下目录树:
project/
A/
__init__.py
foo.py
TestA/
__init__.py
testFoo.py
testFoo的内容是:
import unittest
from A import foo
从 project
目录运行 python testA/testFoo.py
我收到一个ModuleNotFoundError No module named A
我有两个问题:如何从 TestA.testFoo 导入并运行 A.foo 以及为什么在 Python 中掌握导入逻辑如此困难?有没有什么调试技巧可以快速解决此类问题,很抱歉我不得不用这样的基础问题来打扰您?
最佳答案
当你执行一个文件时,会生成一个名为 python path 的环境变量,python import 使用这个变量来查找要导入的文件,这个路径是用你正在执行的文件的路径生成的,它将在当前目录和包含 __init__.py
文件的子目录,如果要从同一级别的目录导入,则需要修改 python 路径或更改项目的体系结构,以便执行的文件为始终处于顶层。
你可以像这样包含你的Python路径:
import sys
sys.path.insert(0, "/path/to/file.py")
您可以阅读有关导入系统的更多信息:https://docs.python.org/3/reference/import.html
我认为最好的方法是不要触及 python 路径并将测试目录包含到测试文件所在的目录中:
project/
A/
__init__.py
foo.py
TestA/
__init__.py
testFoo.py
然后在您的 A 或项目目录中运行 python -m unittest
命令,它将在您的当前目录和子目录中搜索 test 并执行它。
有关单元测试的更多信息:https://docs.python.org/3/library/unittest.html
关于python - 基本的 Python 导入机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52146524/