首页 > 解决方案 > Python3测试文件夹导入问题

问题描述

尝试使用文件夹结构在 Python3 中编写测试

package/
    __init.py__
    Foo.py
    Bar.py
test/
    __init.py__
    test_Foo.py

foo.py

import Bar

test_Foo.py

import Foo

运行python3 -m unittest结果No module named Foo

如果我将其更改为

from package import Foo

它会解决,但Foo.py会出现错误No module named 'Bar'

如果我Foo.py改为

from package import Bar

测试将运行没有错误,但运行python3 Foo.py将导致No module named 'package'

我已经经历过关于这类问题的各种答案,比如这个

使用典型的测试目录结构运行 unittest

和这个

Python3将模块从文件夹导入另一个文件夹

他们都没有解决这个问题

标签: python-3.x

解决方案


您的项目根目录(以及工作目录!)需要是package级。

然后everyimport将是形式import package.moduleor from package import module

如果你运行python packgae/Foo.py或者python -m package.Foo它应该工作。

另请查看pypa - 示例项目以查看推荐的 Python 项目结构。


推荐阅读