首页 > 编程问答 >测试 pkg - 无法访问目录之外的 pkg

测试 pkg - 无法访问目录之外的 pkg

时间:2024-08-02 17:11:56浏览次数:13  
标签:python package

我正在尝试学习如何创建 pkg 和测试。我研究发现,为了测试,您创建一个单独的文件夹

power_decos/

├── pytest_cache/

├── venve/

├── 装饰器/

│ ├──| ||init .py │ ├── 装饰器1.py

| ├── 装饰器2.py

├── 测试/

├──

init .py │ ├──decorator1_test.py

我在decorator1_test中运行 fromdecorators importdecorator1 当我运行它时,它给了我“找不到名为装饰器的模块”

我询问了chatgpt,但他无法帮助我。我也在 github 中查找了示例,但没有找到(至少我能理解)

我希望它导入装饰器 pkg

i am excpecting it to import the decorators pkg


在尝试从测试目录导入 decorators 包时遇到了常见的 Python 导入问题。以下是问题所在以及如何解决:

问题根源:

Python 默认情况下不将子目录自动视为可导入的包。当尝试从 tests/decorator1_test.py 导入时,Python 不知道在哪里找到 decorators

解决方案:

可以通过几种方式解决此问题:

  1. 创建包结构:

  2. power_decos 文件夹中创建一个名为 __init__.py 的空文件。这将告诉 Python 将 power_decos 视为一个包。

  3. 现在,可以使用相对导入:

    python # 在 tests/decorator1_test.py 中 from ..decorators import decorator1

    • .. 表示要上升一级目录(从 tests power_decos
    • 然后,可以从 decorators 包中导入 decorator1
  4. 修改 Python 路径:

  5. 在的测试文件中,可以临时修改 Python 路径以包含 power_decos 目录:

    ```python import sys import os sys.path.append(os.path.abspath(os.path.join(os.path.dirname( file ), '..')))

    from decorators import decorator1 ```

    • 这段代码获取当前文件 ( decorator1_test.py ) 的路径,向上移动一级,并将该路径添加到 sys.path

推荐方法:

第一种方法(创建包结构)通常是更简洁、更易于维护的方法。它明确地将的项目组织为一个包,并允许使用相对导入。

其他提示:

  • 确保的测试文件以 test_ 开头,以便 pytest 可以自动发现它们。
  • 考虑使用虚拟环境来管理的项目依赖项,这可以防止版本冲突。

通过这些调整,应该能够成功地从测试文件导入 decorators 包中的函数和类。

标签:python,package
From: 78824667

相关文章

  • 找出 python 脚本完成执行所需的时间
    我在python脚本中有以下代码:deffun():#Codeherefun()我想执行此脚本,并找出执行时间(以分钟为单位)。如何查明该脚本的执行时间?一个例子将非常感激。你可以使用time模块来测量Python脚本的执行时间。方法如下:importtimedeffun():#代码写在......
  • Python基础教程:全方位掌握print函数
    文章目录1.基本打印2.打印多个参数3.格式化输出使用`%`格式化使用`.format()`方法使用f-string(Python3.6+)4.自定义分隔符5.抑制换行6.打印到文件7.打印对象的字符串表示8.打印时的错误处理9.立即刷新输出缓冲区10.结语1.基本打印打印文本或变......
  • 如何使用Python代码获取Power Bi Visual Level数据
    我有一个Powerbi报告,托管在本地报告服务器上。现在我想使用python代码检索视觉级别数据。例如,我有一个卡片视觉效果,显示为“100”,这个“100”是根据度量计算的,对于某些视觉效果,该值直接来自数据集中的列值。现在我想检索测量值为“100”,而且我还需要直接来自python代......
  • 如何在python中通过requests和opencv加载uint16 png文件
    我正在尝试从URL自动加载图像,然后将其加载到numpy矩阵。为此,我需要使用requests和opencv库。对于像uint8这样编码的标准图像,它以正确的方式工作,并且由于值溢出而损坏了uint16图像。这是我现在正在使用的一个简单的最小代码:importrequestsimportcv2importnumpy......
  • Selenium + Python 自动化测试01(准备篇)
        本篇文章主要讲述Selenium+Python自动化测试-准备篇。主要时相关软件介绍,下载,安卓等。一、Selenium简介    1、Selenium是什么?        官网描述:        Primarily,itisforautomatingwebapplicationsfortestingpurposes,......
  • 如何使用 Python 在 2D 曲面上切割 3D 体积?
    考虑3D中的闭合表面网格(mesh1),由两个合并块组成,如图所示。两个合并块,具有不同颜色的细分补丁。网格以STL文件形式给出,并被细分分成不同的补丁。每个面片都在STL文件中保存为单独的实体。此外,我有一个由STL文件给出的弯曲2D表面网格(......
  • Python教程(十):面向对象编程(OOP)
    目录专栏列表前言一、面向对象编程概述1.1类和对象1.2继承1.3多态1.4封装二、Python中的类和对象2.1定义类2.2`__init__`函数解释2.3创建对象三、继承3.1基本继承3.2创建子类对象四、多态五、封装六.访问限制七、综合实例结语专栏列表Python教程(一):环......
  • Qt C++ 调用 Python 之 PyObject* 数据类型转换
    整数:PyLong_FromLong和PyLong_AsLong类型检查函数:PyLong_Check()intcppInt=42;//C++整数转换为Python整数对象PyObject*pyInt=PyLong_FromLong(cppInt);//Python整数对象转换为C++整数longcppIntFromPy=PyLong_AsLong(pyInt);Py_DECREF(pyInt)......
  • Python 警告:重试(重试(总计=4,连接=无,读取=无,重定向=无,状态=无))
    我正在尝试pipinstall--upgradepip并保持收到此错误:WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'ProxyError('Cannotconnecttoproxy.',NewConnectionError('<......
  • {Python} 有没有办法从函数中“提取”返回值变量并在其他地方使用它,而不调用原始函数?
    第一次在这里发帖。对python来说相对较新,我正在开发一个程序,它基本上是一个随机故事生成器,用于学习语言、发展技能并添加到我的投资组合中。我有一个主文件(最初启动该程序)、一个简介文件(对于介绍部分,获取用户名以及我试图“提取”user_name变量的位置),一个函数文件,其中包......