pytest 在导入时找不到模块,但代码运行良好

2024-05-09

目标是为使用 Cython 的 Python3 项目使用 pytest 单元测试框架。这不是即插即用的事情,因为默认情况下 pytest 无法导入 Cython 模块。也就是说,从 Cython .pyx 模块导入时出现以下错误,在我的例子中名为“calculateScore”:

package/mainmodule.py:5: in <module>
    from calculateScore import some_functions
E   ImportError: No module named 'calculateScore'

使用时都会出现此问题pytest 运行程序 https://stackoverflow.com/questions/48330471/running-pytest-with-cython-how-to-compile-cython-modules-in-pytest以及pytest cython https://pypi.python.org/pypi/pytest-cython方法。奇怪的是,当你不尝试使用它来测试代码时,代码可以像 python 应用程序一样运行良好pytest。 将导入样式更改为import calculateScore or import package.calculateScore没有帮助。


我不知道为什么会发生这种情况,但对我来说最简单的解决方案是使用pytest-cython方法并更改包中下面列出的一项或多项内容setup.py file:

  • 当定义你的Extension为了ext_modules包括 Cython.pyx文件,做not use distutils.extension.Extension而是使用setuptools.Extension

我手动创建的原因Extension而不是使用Cython.Build.cythonize功能,在这里并不重要。但请注意,对于pytest-runner方法:

  • do not使用cythonize函数,但手动创建扩展

写完这篇文章后,我什至无法使用以下命令重现该问题pytest-cython不再,这表明问题的原因可能是其他原因。您可以尝试的另一件事是确保:

  • 当手动创建一个Extension为您.pyx模块,确保名称Extension与模块的名称相同(因此将其命名为“calculateScore”并且not例如“package.calculateScore”)。

  • 删除已编译的.so对应你的文件.pyx文件,然后重新运行。

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

pytest 在导入时找不到模块,但代码运行良好 的相关文章

随机推荐

  • ServerSOAPFaultException 以及如何读取它?

    我做了一个请求 我的程序吐出来了 WARNING Input Action on WSDL operation Search and Action on its associated Web Method search did not ma
  • 如何设置itemTouchHelper选择性滑动?

    所以我在 recyclerview rv 上实现了这个 itemtouchhelper simple 回调 现在 在这个 rv 中 我根据内容类型将 2 种布局设置为一行 因此 当我在 rv 上设置此 touchhelper 时 它正在这两
  • 尽早访问控件 | load 与 domready

    我最近访问 jsfiddle net 发现这是一个配置选项 这让我想到这可能有助于解决我遇到的问题 我加载了多个图像 尚未升级到单个精灵 因此在它们全部下载之前我无法使用我的控件 图像占用了大部分下载时间 因此在最初几秒钟我无法访问我的控制
  • 在模型中的方法中捕获异常时重定向

    我正在使用 Authlogic connect 连接各种服务提供商 user rb中有一个方法 def complete oauth transaction token token class new oauth token and sec
  • 应用程序启动时立即隐藏导航栏

    基于以下代码片段 我能够隐藏状态栏当应用程序启动时 但不是导航栏 由后退 主页和任务管理器按钮组成的栏 因为它隐藏了稍后在 MainActivity 的线程完成加载后 这是清单
  • 错误:在 Java 中声明布尔值时不是一个语句

    下面的代码 boolean continue false 返回以下错误 error not a statement boolean continue false 为什么会发生这种情况 我对布尔值非常熟悉 试试这个 boolean cont
  • 有谁知道 Java 中有一个可以解析 ESRI Shapefiles 的库吗?

    我有兴趣为道路数据编写可视化程序2009 Tiger Line 形状文件 http www census gov geo www tiger tgrshp2009 documentation html 我想绘制线路数据来显示我所在县的所有道
  • java.sql.SQLException:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我已尝试使用以下代码来检索存储在数据库中的图像 我创建了一个名为image db包含一个名为的表image details 该表有两个字段 id and image path两者都是类型mediumblob 我在
  • env 配置文件中未初始化的常量 ActiveSupport::EventedFileUpdateChecker

    我是 Ruby on Rails 的新手 运行 捆绑 命令进行更新 安装后 当我尝试执行以下操作时rails s or rails g mongoid config控制台返回以下消息开头 home myUser proyect config
  • Android 视图展开动画

    我正在尝试编辑这些来源 https github com gabrielemariotti androiddev tree master AnimationTest创建一个适用于我所有视图的简单函数 Override public void
  • xdotool 类型需要很长时间并导致整个桌面冻结

    我一直在使用xdotool type过去只能在快捷方式上输入耸肩xdotool type 这可行 但总是需要相当长的时间 并导致整个桌面冻结 完全冻结 而不仅仅是输入 几秒钟 不过并没有太打扰我 现在我需要一种方法来从文件中读取内容 对其进
  • Android ACTION_DATE_CHANGED 广播

    我有 Nexus S 当我在手机上手动更改日期时 ACTION DATE CHANGED 并不总是被广播 如果我将日期从 2014 年 2 月 13 日更改为 2014 年 2 月 14 日 我还没有获得 ACTION DATE CHANG
  • 禁用页面的浏览器打印选项(页眉、页脚、边距)?

    我在 SO 和其他几个网站上看到过以几种不同的方式提出这个问题 但大多数都太具体或过时了 我希望有人能在这里提供明确的答案 而不是迎合猜测 当有人在浏览器中打印时 有没有办法使用 CSS 或 javascript 更改默认打印机设置 当然
  • 熊猫滚动意味着更新

    考虑数据框 df pd DataFrame a None None None None 1 2 1 0 1 b 5 4 6 7 None None None None None gt gt a b 0 NaN 5 0 1 NaN 4 0 2
  • glBlitFramebuffer 渲染缓冲区和渲染全屏纹理哪个更快?

    哪个更快更高效 使用 OpenGL 纹理作为 CUDA 表面并在四边形上渲染 新样式 使用渲染缓冲区作为 CUDA 表面并使用 glBlitFramebuffer 进行渲染 None
  • 设置字节中的特定位

    我正在尝试设置 Java 字节变量中的位 它确实提供了适当的方法 例如 setBit i 有谁知道我如何才能实现这一点 我可以按位迭代给定的字节 if my byte 1 lt lt i 0 但是我不能将此位置设置为 1 或 0 可以吗 使
  • 在composer.json中运行命令行命令

    我正在尝试编写一个composer json 文件 该文件将连续运行多个命令行命令 作为一个示例 如下所示 scripts test createDir createDir mkdir testing 当我在终端中运行作曲家文件时使用com
  • 使用 javascript 选择框架上下文

    有没有一种方法可以使用 Javascript 以编程方式选择框架上下文 假设当前网页中有两个不同的框架 我需要将 hello 附加到第二个框架 问题是第二个框架的域与当前网页不同 使用 Chrome 开发者工具 我可以简单地选择第二个框架上
  • 类似的 PHP 表单代码:如果 $_REQUEST 为空,第一个抛出错误,第二个则不抛出错误

    我是 PHP 新手 所以这可能是一个简单的答案 希望我能正确地按照 SO 标准格式化它 对于该网站来说仍然是新的 我正在通过 SitePoint 编写两组非常相似的代码 提交表单数据并使用 htmlspecialchars 来阻止 XSS
  • pytest 在导入时找不到模块,但代码运行良好

    目标是为使用 Cython 的 Python3 项目使用 pytest 单元测试框架 这不是即插即用的事情 因为默认情况下 pytest 无法导入 Cython 模块 也就是说 从 Cython pyx 模块导入时出现以下错误 在我的例子中