pytest 无法导入模块,而 python 可以

2024-04-13

我正在用 Python 开发一个包。我使用虚拟环境。我在 virtualenv 的 .pth 路径中设置了模块根目录的路径,这样我就可以在开发代码时导入包的模块并进行测试(问题 1:这是一个好方法吗?)。这工作正常(这是一个例子,这是我想要的行为):

(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python
Python 2.7.12 (default, Jul  1 2016, 15:12:24) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from rc import ns
>>> exit()
(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python tests/test_ns.py 
issued command: echo hello
command output: hello

但是,如果我尝试使用 PyTest,我会收到一些导入错误消息:

(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ pytest
=========================================== test session starts ============================================
platform linux2 -- Python 2.7.12, pytest-3.0.5, py-1.4.31, pluggy-0.4.0
rootdir: /home/zz/Desktop/GitFolders/rc, inifile: 
collected 0 items / 1 errors 

================================================== ERRORS ==================================================
________________________________ ERROR collecting tests/test_ns.py ________________________________
ImportError while importing test module '/home/zz/Desktop/GitFolders/rc/tests/test_ns.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_ns.py:2: in <module>
    from rc import ns
E   ImportError: cannot import name ns
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
========================================= 1 error in 0.09 seconds ==========================================
(VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ which pytest
/home/zz/Desktop/VirtualEnvs/VEnvTestRc/bin/pytest

我有点困惑,看起来这表明导入错误,但 Python 没有问题,那么为什么 PyTest 会出现问题呢?对原因/补救措施有何建议(问题2)?我用谷歌搜索并堆栈溢出了 PyTest 的“ImportError:无法导入”错误,但我得到的命中与缺少 python 路径和补救措施有关,这似乎不是这里的问题。有什么建议么?


找到了答案:

请勿放置__init__.py如果您计划使用 pytest,请将文件放在包含 TESTS 的文件夹中。我有一个这样的文件,删除它解决了问题。

这实际上被埋在了第二个答案的评论中pytest 的 PATH 问题“ImportError:没有名为 YadaYadaYada 的模块” https://stackoverflow.com/questions/10253826/path-issue-with-pytest-importerror-no-module-named-yadayadayada所以我没有看到它,希望它在这里得到更多的关注。

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

pytest 无法导入模块,而 python 可以 的相关文章

随机推荐

  • 致命错误:在第 6 行对 C:\wamp\www\ci\application\models\site_model.php 中的非对象调用成员函数 get()

    你好 我刚刚观看了 Nettuts 上的第一个 第一天的截屏视频 CodeIgniter from scrap 我已经遇到了一个我不明白的错误 这是一个屏幕截图http i39 tinypic com 14mtc0n jpg http i3
  • Google 日历 PHP API 不发送邀请电子邮件

    我已使用 PHP 和服务帐户成功与 Google 日历集成 我可以做什么 更新日历事件 将与会者添加到日历活动 我不能做什么 添加新与会者时发送邀请电子邮件 这是迄今为止我用来完成所有事情的完整代码 putenv GOOGLE APPLIC
  • Django 多个数据库 - 一个并不总是可用

    我正在开发一个 Django 应用程序 它将使用多个数据库后端 我想在运行 django 应用程序的机器上放置一个 sqlite 数据库 并同步到远程 mysql 数据库 棘手的部分是 运行应用程序的机器并不总是有互联网连接 因此 mysq
  • 根据用户选择的选项设置单选按钮的值

    根据用户对三个下拉列表的选择 我想从下面的对象中设置给定单选按钮的值 例如 如果我从第一个选择标签中选择 Drop Down 1 1 并将其他两个留空 则 radio button 4 的值不会为 r 5000 R 如果我选择 下拉 1 1
  • 使用嵌套字典Python的自定义类

    当使用相同的键在嵌套字典中添加值时遇到问题 并且该值始终显示相同的值 事实是 我想更新值事件 键是相同的 该算法是人工鱼群算法的基础 example gt gt fish template 0 weight 3 1 visual 2 ste
  • Boost read_json 和 C++11

    我正在尝试使用 Boost 的 property tree 解析器和 C 11 代码解析 JSON 我的系统是带有 gcc 4 7 2 和 Boost 1 49 的 Debian Wheezy 我尝试了以下代码基于使用 boost 序列化和
  • 数组映射返回未定义的数组,何时应返回对象数组

    为什么 a b c map x gt letter x 返回一个未定义的数组 and a b c map x gt letter x 0 正确返回对象数组 Because 您可以使用大括号作为块语句 https developer mozi
  • 在数据框中创建一个新列:组中的索引(组之间不唯一)

    我有一个包含两列的数据框 第一列包含每个人所属的组 第二列包含个人的 ID 见下文 df lt data frame group c G1 G1 G1 G1 G2 G2 G2 G2 indiv c indiv1 indiv1 indiv2
  • android 如何监听自定义变量?

    我看过这个线程 如何实现监听器 https stackoverflow com questions 5941960 android how to implement listener关于实现侦听器 它实际上非常简单 但我不知道它到底是如何完
  • 检索并使用 Microsoft 或 Mozilla 的 Root-CA 列表并在 Java 中使用它?

    OpenJDK for Windows 中包含的根 CA 证书列表非常令人印象深刻 但有很多根 CA 证书受到 Firefox 等常见浏览器的信任 但不受 Java 信任 Both 微软 https support microsoft co
  • ASP.NET MVC3 和服务器端验证

    假设用户禁用了 javascript 因此客户端验证在 MVC3 中不起作用 实现服务器端验证的最佳方法是什么 以便当用户尝试以不适当的方式处理数据时仍然显示验证消息 Thanks EDIT 显然发生这种情况是因为我使用 EF 生成的模型
  • jquery fancybox 触发点击仅工作一次

    我从绑定到表行的单击事件调用 jquery fancybox 链接 该操作第一次工作正常 但是 如果我关闭 fancybox 并再次单击任何行 绑定到该行的匿名函数仍然会触发 但 fancybox 不会启动 这是我正在使用的 JavaScr
  • 在 CruiseControl.NET 构建中使用“devenv”和“msbuild”有什么区别?

    CruiseControl NET 中使用 标记和 标记的主要区别是什么 我知道它们调用不同的可执行文件 但有时我会得到不同的结果 就编译时的通过 失败而言 我想知道为什么两个构建命令之间存在差异 基本上 devenv Visual Stu
  • hashbang 行上的 Eclipse javascript 语法错误

    当我将一些现有的 Node js 代码导入 Eclipse 工作区时 它会抱怨 令牌 无效字符 出现语法错误 请删除此令牌 on the usr bin env node哈希邦线 我怎样才能告诉 Eclipse 忽略这个错误 对于 Node
  • Android - 如何更新通知号码

    您好 我想在单个视图中显示所有通知 并且想要更新状态栏中的通知数量 它更新所有信息 但显示数量始终为 1 请告诉我如何解决它 Override public void onReceive Context context Intent int
  • VHDL 中的 #define 等价物是什么

    VHDL 中的 define ifdef 和 ifndef 相当于什么 我想使用泛型作为 define 并根据它们更改设计 举一个简单的例子 定义一个字符串泛型并用它来确定时钟是单时钟还是差分时钟 generic something boo
  • 如何将 NSData 转换为 NSString? [复制]

    这个问题在这里已经有答案了 可能的重复 将 UTF 8 编码的 NSData 转换为 NSString https stackoverflow com questions 2467844 convert utf 8 encoded nsda
  • 如何在其适配器的 onBindViewHolder 内更新 recyclerView?

    我在 recyclerView 中制作了一张卡片列表 当卡持有一段时间后 其在数据库中的相应条目将被删除 因此之后 必须删除该卡 这可以通过调用设置新的更新适配器来完成 但我无法在 onBindViewHolder 中使用 setAdapt
  • 在 Firefox 中,在选项卡重定向之前获取 URL 的方法是什么?

    我为 Firefox 开发了一个附加组件 它有一个重定向链接 https www google com vn url sa t rct j q esrc s source web cd 1 cad rja uact 8 ved 0CB0QF
  • pytest 无法导入模块,而 python 可以

    我正在用 Python 开发一个包 我使用虚拟环境 我在 virtualenv 的 pth 路径中设置了模块根目录的路径 这样我就可以在开发代码时导入包的模块并进行测试 问题 1 这是一个好方法吗 这工作正常 这是一个例子 这是我想要的行为