Python 3.6.4运行pytest遇ModuleNotFoundError问题求助
解决Python 3.6.4 + pytest的ModuleNotFoundError问题
结合你给出的项目结构,这种模块找不到的问题大多和Python的模块搜索路径或者pytest的运行配置有关,我给你几个针对性的排查和解决步骤:
1. 务必在项目根目录运行pytest
Python默认会把当前工作目录加入到模块搜索路径sys.path里。你的项目根目录是包含MANIFEST.in、README.md和company文件夹的那个目录——如果你的终端当前路径是company/api或者其他子目录,运行pytest时Python自然找不到company这个顶级模块。
解决方法:先通过cd命令切换到项目根目录,再执行pytest命令。
2. 确认__init__.py文件无异常
你项目里的每个子文件夹都有__init__.py,这是Python识别包的必要条件,但要注意:
- 这些文件可以是空的,但不能有语法错误
- 不要在
__init__.py里写会干扰模块导入的代码(比如错误的导入语句)
如果某个__init__.py有问题,会导致整个包无法被正常识别。
3. 配置pytest的Python路径
如果因为某些原因无法在根目录运行pytest,可以通过两种方式强制把项目根目录加入搜索路径:
方式一:命令行参数
运行pytest时加上--pythonpath参数,指定你的项目根目录:
pytest --pythonpath=/absolute/path/to/your/project/root
方式二:使用pytest配置文件
在项目根目录新建一个pytest.ini文件,内容如下:
[pytest] pythonpath = .
这样每次运行pytest时,都会自动把当前目录(项目根)加入到Python的模块搜索路径里。
4. 检查虚拟环境与依赖兼容性
- 确保你激活了正确的虚拟环境,并且已经安装了所有依赖(包括pytest)
- 注意Python 3.6.4已经不再维护,对应的pytest版本要选兼容的——推荐安装
pytest<=5.4.3,更高版本的pytest已经不再支持Python 3.6了。你可以用这个命令安装:
pip install pytest==5.4.3
5. 先手动验证导入是否正常
在项目根目录打开Python交互环境,执行以下测试导入:
import company.api.auth
如果这个导入能成功,说明Python本身能找到模块,问题大概率出在pytest的配置上;如果导入失败,那就要先排查Python的路径问题(比如当前目录是否在sys.path里)。
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

