【问题标题】:ModuleNotFoundError: No module named 'Src' - When I run a PytestModuleNotFoundError: No module named 'Src' - 当我运行 Pytest
【发布时间】:2020-01-18 16:58:22
【问题描述】:

我正在构建一个不和谐的机器人,但在导入包含我要测试的功能的代码时遇到问题。

当我运行 MemberRepositoryTest.py 文件时,它给了我以下错误:

ModuleNotFoundError: No module named 'Src'

MemberRepositoryTest.py (/Tests/Src/Repositories/)

import pytest

from Src.Repositories import MemberRepository # <--- This line is failing.

# TODO: Implement tests

我的文件夹结构是这个链接上的 - https://imgur.com/a/Rh65iJY

测试结构是:

Tests/Src/Repositories/MemberRepositoryTest.py(镜像源)

我不确定为什么它没有找到我的模块,所以我可以导入类和函数。

根据我的在线研究,我认为我的 init.py 文件可能有问题。但是,作为 Python 新手,我并不完全理解这一点。我阅读了 Python 文档,其中解释了它创建了一个包,其中包含文件作为模块。这意味着我已将目录中的每个文件都导入到 init.py 文件中。但是,我仍然遇到这个问题。

初始化文件(在根目录):

import Src

初始化文件(/Src/):

import Cogs
import Entities
import Models
import Queries
import Repositories
import AppConfig
import DatabaseConnection

初始化文件(/Src/Repositories):

import GuildRepository
import MemberRepository

我从项目的根目录(documents/rush_bot)运行它。我运行执行测试文件的命令是pytest Tests/Src/Repositories/MemberRepository.py

我的 Python 路径环境是:

C:\WINDOWS\SYSTEM32\python27.zip
C:\Python27\DLLs
C:\Python27\lib
C:\Python27\lib\plat-win
C:\Python27\lib\lib-tk
C:\Python27
C:\Python27\lib\site-packages

【问题讨论】:

  • 我在屏幕截图中没有看到那些__init__.py 文件。
  • @PatrickHaugh 抱歉,我已更新链接以显示 __init__.py 文件。
  • 您能否编辑您的问题以包含您的 PYTHONPATH 环境变量、您用于运行测试的命令以及您从哪个文件夹运行它?
  • @GabrielC 我已添加您要求的信息。我的 PATH 正在查找 python 2.7,但我的机器人一直在运行 3.7.4。虽然我需要保留 2.7,因为我的 twitch 聊天机器人脚本需要 2.7。

标签: python python-3.x pytest python-import discord.py


【解决方案1】:

Python 找不到您的包,因为它不在 PYTHONPATH 中。

您可以将项目文件夹添加到 PYTHONPATH 或 .。如果添加.,那么 Python 将始终在当前目录中查找包。

顺便说一下,在这个 Init 文件 (/Src/Repositories) 中,您正在导入没有完整路径的模块。

import Src.Repositories.GuildRepository
import Src.Repositories.MemberRepository

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-27
    • 2022-12-27
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多