传递导入错误:ModuleNotFoundError:没有名为“...”的模块

2024-07-04

我现在很困惑。这是项目树:

project
- source
- - lib
- - - __init__.py
- - - utils.py
- - - stats.py
- test
- - lib
- - - test_stats.py

stats.py has import utils,如果执行的话确实有效stats.py本身。现在test_stats.py has import lib.stats但这会导致ModuleNotFoundError: No module named 'utils'如果执行为错误PYTHONPATH=source pytest in the project目录:

==================================== ERRORS ====================================
___________________ ERROR collecting test/lib/test_stats.py ___________________
ImportError while importing test module '/lib/test_stats.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/lib/test_stats.py:40: in <module>
    import lib.stats
source/lib/__init__.py:42: in <module>
    from .stats import Stats
source/lib/stats.py:40: in <module>
    import utils
E   ModuleNotFoundError: No module named 'utils'
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!
=========================== 1 error in 0.19 seconds ============================

发生了什么事以及如何使用这样的目录结构正确执行测试?

P.S.我知道(开发模式)pip install ... and tox技巧(用于模块搜索路径),但我想了解它们是否是绝对必要的,或者我已经假设这个简单的设置出了问题。


import utils在Python 3中是绝对导入,Python看起来是模块utils in sys.path.

当你跑步时stats.py作为脚本 Python 添加目录project/source/lib/ to sys.path. So import utils在剧本作品中。

但当你跑步时test_stats.pyPython不添加project/source/lib/ to sys.path. So import utils不起作用。

克服这个问题的一种方法是使用相对导入:from . import utils. In stats.py意思是:不要搜索sys.path,导入模块utils来自与以下相同的目录stats.py。但随后你就失去了奔跑的能力stats.py作为脚本。所以将主要代码从stats.py到外部的单独脚本lib/.

一个稍微不同的解决方案是将主代码从stats.py到模块__main__.py并使用执行模块python -m lib (project/source/必须在sys.path).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

传递导入错误:ModuleNotFoundError:没有名为“...”的模块 的相关文章

  • 使用 Scipy 将字典从 Python 保存到 Matlab

    我发现将整齐生成的数据保存到 mat 文件中时遇到一些问题 我认为使用 Scipy 更简单 但似乎我弄错了 这是我要保存的数据的示例 out features array 5 00088905e 01 1 51847522e 01 4 93
  • 使用 Matplotlib 创建箱线图

    我正在使用 python 3 和 jupyter 笔记本 我有一个 pandas 数据框 其结构如下 location price Apr 25 ASHEVILLE 15 0 Apr 25 ASHEVILLE 45 0 Apr 25 ASH
  • 是否可以在所有平台上确定性地从 jpeg 文件中读取像素?

    我遇到一个问题 我发现 JPEG 图像中的像素可能会略有不同 具体取决于我用来读取它们的计算机 我主要是一名Python程序员 我更喜欢使用opencv来读取我的图像 但我不反对使用PIL做一些事情或用C读取图像 根据这篇文章JPEG 图像
  • 配置 argparse 以接受带引号的参数

    我正在编写一个程序 除其他外 它允许用户通过参数指定要加载的模块 然后用于执行操作 我试图建立一种方法来轻松地将参数传递到这个内部模块 并且我试图使用 ArgParse 的action append 让它构建一个参数列表 然后我将通过它 这
  • networkx - 根据列表或字典值更改节点大小

    我正在尝试在networkx中制作一个图表 我在为节点分配不同的节点大小时遇到 问题 这是我一直在玩的代码 import sys from collections import defaultdict import networkx as
  • Pandas DataFrame 到列表列表

    将列表列表转换为 pandas 数据框很容易 import pandas as pd df pd DataFrame 1 2 3 3 4 5 但是如何将 df 转回列表列表呢 lol df what to do now print lol
  • ModuleNotFoundError:没有名为“binance.client”的模块; “binance”不是一个包

    嘿 我是 Stack Over Flow 和 Python 的新手 但想学习并希望有人可以帮助我 我正在尝试在 python 中开发一个币安交易机器人 请参阅下面我的脚本 from binance client import Client
  • 为什么“linkClicked(const QUrl&)”信号没有捕获鼠标左键的 QUrl?

    首先 我想澄清的是 这种奇怪的行为并不适用于每个网站 这是我的代码网页浏览器 https github com EricsonWillians Open Browser def compose tab self index self tab
  • 使用 Python 在 Yandex Images 中反向搜索图像

    我对自动化反向图像搜索感兴趣 Yandex 特别适合捕捞鲶鱼 甚至比 Google 图片还要好 因此 请考虑以下 Python 代码 import requests import webbrowser try filePath C path
  • 嵌入式Python,导入数学错误

    首先我使用的是 Mac OSX 10 12 6 我想在我的 C 应用程序中嵌入 python 环境 我把 github python 项目放在https github com python cpython https github com
  • IDA Python - 为什么我的代码返回不正确的 ESP 值?

    我制作了一个 ida python 代码 用于检查代码覆盖率 但是当我使用这个脚本时 我遇到了运行时错误 并且无法获得正确的 ESP 值 我的代码 from idaapi import class DbgHook DBG Hooks def
  • 删除超过 7 天的文件

    我看过一些帖子删除特定文件夹中的所有文件 不是文件夹 但我根本不明白它们 我需要使用 UNC 路径并删除所有超过 7 天的文件 Mypath files data APIArchiveFolder 有人有快速脚本 可以专门输入上面的路径来删
  • 使用 Python 3 在 Mac 上没有名为“_tkinter”的模块

    我正在尝试使用 Tkinter 作为 GUI 将我的脚本捆绑到 app 中 而执行捆绑的包装器是 Platypus 当我去运行该应用程序时 我收到此错误 Traceback most recent call last File Users
  • Numpy,沿数组维度应用函数列表

    我有一个类型的函数列表 func list lambda x function1 input lambda x function2 input lambda x function3 input lambda x x 和形状为 4 200 2
  • 在 cmd.Cmd 命令行解释器中更好地处理键盘中断

    在使用 python 的 cmd Command 创建自定义 CLI 时 如何告诉处理程序中止当前行并给我一个新的提示 这是一个最小的例子 console min py run python console min py import cm
  • 为什么 SendMessage 对某些应用程序不起作用?

    背景 我试图编写一个自动点击器来在后台点击应用程序 Roblox https en wikipedia org wiki Roblox 不尝试做任何恶意的事情 我能够获取该窗口并执行诸如关闭它之类的命令 但是 当尝试将点击发送到窗口时 它会
  • 如何编写一个 SQLAlchemy 查询来返回图中节点的所有后代?

    我正在开发一个应用程序 其中我的数据库对象通常有多个父级和多个子级 并且希望创建一个 SQLAlchemy 查询来返回对象的所有后代 意识到我基本上是在尝试将图形存储在 SQL 数据库中 我发现设置一个自引用多对多模式 http docs
  • 获取矩阵中总和值最大的列

    比方说 import numpy as np f np matrix 1 2 3 4 5 6 是否可以从矩阵中检索具有最大列和的列数 如何 你可以写 gt gt gt f sum axis 0 argmax 1 所以专栏1求和到最大的值 为
  • Python 与 Hive 的连接

    我安装了 Hortonworks Hive ODBC 驱动程序并在数据源中创建了连接 我测试了它并且成功了 我安装了PyODBC并编写了以下代码 import os sys pyodbc con pyodbc connect DSN MyC
  • 在Python中返回外部函数错误

    这就是问题 给定以下 Python 程序 假设用户从键盘输入数字 4 返回的值是多少 N int input enter a positive integer counter 1 while N gt 0 counter counter N

随机推荐

  • 对 .NET Remoting CAO 的暴力攻击

    我正在尝试使用 NET 远程客户端激活对象来在多次调用期间保留客户端的身份验证信息 而不是实现需要客户端在每次调用中发送会话 ID 的会话管理系统 正如 MSDN 所说 当客户端使用 new 运算符提交对服务器对象的请求时 激活请求消息将发
  • 如何使用 MVVM light 处理 WP 8.1 上的后退按钮?

    我正在寻找适当的方法来处理 Windows Phone 8 1 WinRT 上的后退按钮按下事件NavigationService在 MVVM light 5 上可用 到目前为止 我认为最好的地方是在ViewModelLocator通过注册
  • R: tibble::lst 名称中不需要的引号

    我最近才了解到tibble lst 它创建一个列表对象 但自动命名列表项 我用它作为快捷方式 gt 使用名称作为工作流程 id论证中map dfr 所以自动命名确实很有帮助 然而 这些名称都带有引号 我注意到这一点是因为它们笨拙地打印在轴刻
  • Python将html ascii编码文本转换为utf8

    我有一个 xml 文件 需要将其转换为 utf8 不幸的是 这些实体包含这样的文本 047 mytext 044 我正在使用编解码器库将文件转换为 utf8 但 html 实体无法使用它 有没有一种简单的方法可以摆脱html编码 Thank
  • 如何让电报机器人通过链接加入频道?

    我想编写一个爬虫机器人 它可以浏览频道并找到具有高观看次数的消息 是否可以通过链接将机器人添加到频道 机器人是否可以读取频道中广播的消息 机器人是否可以读取频道中消息的查看计数值 如果上述任何一个问题是可能的 那么解决方案是什么 只有创建者
  • JSON e 和 JSON E

    在 JSON 网站上here http www json org 它解释了 JSON 对象 的不同可能性 然而 在数字部分 这些出现 e e e E E E 1 这些代表什么 在寻找答案的过程中
  • 正则表达式在日期中添加连字符

    在 R 中 我有一个如下所示的字符串 x lt c 20130603 00 00 03 102 20130703 00 01 03 103 20130804 00 03 03 104 我想通过使用一个单一的看起来像下面gsub命令 而不是使
  • 当object.next到达末尾时如何指向第一个元素?

    从数组创建枚举对象a 有没有什么方法可以指向 first when next到达终点 a 5 1 b a to enum b next gt 5 b next gt 1 b next gt Stop Iteration Iteration
  • mySQL 和 XAMPP 端口冲突

    我已经使用 XAMPP Apache 一段时间了 最 近决定安装 MySQL 然而 它们似乎是矛盾的 MySQL 似乎优先 并且它运行正常 但是 XAMPP Apache 在尝试启动 Apache 时给我此错误消息 03 07 32 AM
  • 在 Windows Server 2003 上安装 PHP 5 - %1 不是有效的 Win32 应用程序

    我正在尝试在带有 IIS 6 的 Windows Server 2003 环境上安装 PHP 5 安装 PHP 并在 IIS 中进行必要的更改后 出现以下错误 1 is not a valid Win32 application 服务器不是
  • 无法使用react-native-xmpp连接openfire

    我有一个反应本机聊天应用程序 我使用 USB 调试在我的 Android 手机上运行 并且我使用 OPENFIRE 作为聊天服务器 为了与 Openfire 连接 我正在使用库 反应本机xmpp 下面是使用react native xmpp
  • 嵌入式Python,导入数学错误

    首先我使用的是 Mac OSX 10 12 6 我想在我的 C 应用程序中嵌入 python 环境 我把 github python 项目放在https github com python cpython https github com
  • Asyncio 函数在从脚本调用时有效,但在 Flask 路由中无效

    我是 Python 和这些库 模块的新手 我正在编写一个简单的 ping 测试网络扫描仪作为学习项目 我首先使用 asyncio 开发了一个脚本来 ping 网络上的地址 ip test py import asyncio import i
  • 如何检测动态绘制图形的点击?

    我正在面板上绘制文件和文件夹名称列表 并试图集体讨论检测用户是否单击文件 文件夹名称以及何时单击文件 文件夹名称以及他们实际单击的文件或文件夹名称的最佳方法 以下是我迄今为止编写的方法 我的第一个想法是用透明控件搭载每段文本 并以这种方式动
  • UICollectionView - 如果选择了单元格,则不会调用 didDeselectItemAtIndexPath

    我做的第一件事是设置选定的单元格 UICollectionViewCell collectionView UICollectionView collectionView cellForItemAtIndexPath NSIndexPath
  • Android:可以在同一任务中启动一个活动的多个实例吗?

    我尝试使用此代码从父活动启动多个活动 for int i 0 i
  • IntelliJ IDEA 10.5 的 Scala 案例类中的部分 EMMA 代码覆盖率

    我正在使用 IntelliJ IDEA 10 5 以及 8 月 14 日更新的 Scala 插件 v0 4 1338 和 Scala 2 9 0 1 我最近开始使用 IDEA 中的 EMMA 测试覆盖率实用程序来生成覆盖率报告 我无法确定为
  • IDA Python - 为什么我的代码返回不正确的 ESP 值?

    我制作了一个 ida python 代码 用于检查代码覆盖率 但是当我使用这个脚本时 我遇到了运行时错误 并且无法获得正确的 ESP 值 我的代码 from idaapi import class DbgHook DBG Hooks def
  • 带有索引堆栈的 Flutter BottomNavigator

    有关使用索引堆栈在选项卡之间导航以显示相关页面的问题 我这样做是为了保持页面的滚动 状态 这很好用 我可以通过单击选项卡来更改显示的当前页面 并且还可以在每个页面内导航 每个页面都包含有它自己的导航器 这是渲染页面的代码 Widget bu
  • 传递导入错误:ModuleNotFoundError:没有名为“...”的模块

    我现在很困惑 这是项目树 project source lib init py utils py stats py test lib test stats py stats py has import utils 如果执行的话确实有效sta