如何从当前文件夹旁边的文件夹导入模块?

2024-03-26

我已经检查了尽可能多的页面,并尝试了我找到的所有内容,但没有一个成功。我还检查了有关导入的 PEP 页面并尝试了每个示例,但没有一个起作用。

我有一个包含单元测试的测试文件夹,我需要导入我想要测试的模块。这些模块位于 src 文件夹旁边的名为“src”的文件夹中。

文件夹/文件看起来像这样:

Project / 
        src /
            stringbuilder.py
            __init__.py
        tests / 
            stringbuilder_test.py
            __init__.py
        main.py
        __init__.py

我已尽我所能:添加__init__.py到每个文件夹,使其成为一个模块,包括项目的主文件夹。

import src.module_to_test 
from ..src.module_to_test import function_to_test
from ..src import module_to_test

我测试了所有其他组合,但都失败了。我开始认为我的设置或理解一定有问题——我认为这应该很简单。

如果我犯了任何明显的错误,请告诉我。

from tests import stringbuilder

错误信息:

$ ./stringbuilder_test.py
Traceback (most recent call last):
  File "./stringbuilder_test.py", line 14, in <module>
    from tests import stringbuilder
ImportError: No module named tests

同样的错误发生在(但测试= src):

from src import stringbuilder

如果从包内部执行脚本,则需要采用各种技巧才能使导入正常工作。其中最常见的可能是操纵sys.path:

import sys, os

sys.path.insert(0,
    os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from src import stringbuilder

del sys.path[0]

使用普通的导入语句无法实现此目的。

通常更好的解决方案是完全避免在包内运行脚本。相反,将所有脚本outside包含目录中的包。鉴于当前运行脚本的目录会自动添加到sys.path,这将保证无论脚本从哪里执行,包始终可以直接导入。

所以目录结构可能看起来像这样:

project /
    package /
        __init__.py
        src /
            __init__.py
            stringbuilder.py
        tests / 
            __init__.py
            stringbuilder_test.py
    main.py
    test.py

The test.py然后脚本可以像这样导入它的测试:

from package.tests import stringbuilder_test

And stringbuilder_test.py可以导入src像这样的模块:

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

如何从当前文件夹旁边的文件夹导入模块? 的相关文章

随机推荐

  • 在 Magento 中复制并粘贴类别

    我想将我的第一个类别复制到 Magento 中的第二个类别 我应该怎么办 谢谢 韦斯利 By code
  • XML DeSerialize - 可以在文件中捕获额外的 XML 吗?

    有没有办法将您在课堂上没有预料到的额外 XML 标记捕获到文件中 例如 using System using System Collections Generic using System IO using System Linq usin
  • 使用 Flask-Restful 返回渲染的模板在浏览器中显示 HTML

    我是 Python 和 Flask 的新手 我的应用程序的根目录中有一个模板文件夹 其中有两个文件
  • 启动时 LiteSQL DB 不为空

    我认为这是一个相当简单的问题 我对 Android 的东西还太年轻 我想准备将使用数据库的应用程序 在我展示的每个示例中 都有一个空数据库 其中首先启动应用程序 然后进行一些插入 我希望应用程序具有相当大的数据库 因此我希望在应用程序启动时
  • 对于具有行间距和多种颜色的单行文本,UILabel 大小不正确

    我很确定这实际上是一个 UIKit 错误 但想获得一些输入来看看我是否在这里遗漏了一些愚蠢的东西 这是我的代码 single line with modified line spacing and 2 colors broken line
  • MVC3 中的 IValidatableObject - 客户端验证

    使用 MVC3 您可以使用两种新机制来添加自定义验证 它们是 1 ValidationAttribute 子类或 2 实现 IValidatableObject ValidationAttribute 允许您通过实现 IClientVali
  • 在哪里可以找到使用 RSpec 测试 Thor 脚本的好示例?

    在哪里可以找到使用 RSpec 测试 Thor 脚本的好示例 到目前为止 我的搜索还没有找到任何好的结果 尝试 Thor 自己的存储库 https github com wycats thor tree master spec https
  • Unity 的 YUV 着色器?

    我在 Unity 中有一些 适当的 平面的 YUV 纹理 我只想看看它们供开发使用 Unity 他们的着色器语言变体 实际上有一个可用的 YUV 着色器吗 从概念上讲 从 YUV 转换为 RGB 很简单 但有点繁琐 YUV 到 RGB 转换
  • ASP.NET MVC 3 中的 OutputCache 行为

    我刚刚在 ASP NET MVC 3 的 RC 版本中测试输出缓存 不知何故 它不尊重 VaryByParam 属性 或者更确切地说 我不确定我理解发生了什么 public ActionResult View UserViewCommand
  • 如何捕获 Web 服务抛出的肥皂异常?

    我成功地在我的网络服务中抛出了一些肥皂异常 我想捕获异常并访问异常调用的字符串和 ClientFaultCode 以下是我在 Web 服务中的一个例外示例 throw new SoapException You lose the game
  • 如何根据偏航角计算方向矢量?

    我有一个问题 我不知道如何使用 Java LWJGL 计算方向向量以在 OpenGL 中渲染 我有以下系统 X 转到屏幕右侧 Z 进入我的屏幕 Y 转到屏幕顶部 高度 因此我正在XZ平面上行走 现在我想要执行 已经执行了WASD运动 并且它
  • 当我所做的只是一个列表时,为什么 Hibernate 会删除我的集合条目?

    我似乎有一个相当奇怪的问题 我在 JSP 中显示用户及其角色 由于某种原因 角色仅在第一次加载页面时显示 我刷新页面 角色全部从数据库中删除了 我的设置是标准 Spring MVC JPA Hibernate 通过 Spring Data
  • 标签发布

    是否可以仅从 a 标签 我知道锚标记通常仅用于 GET 并且我知道我可以使用 javascript 来执行此操作 例如JavaScript post 请求就像表单提交 https stackoverflow com questions 13
  • opencv错误:输入参数的大小不匹配

    我正在使用金字塔进行图像混合 我收到 opencv 错误 我正在关注官方 opencv 教程 http docs opencv org 3 0 beta doc py tutorials py tutorials html http doc
  • 确认()对话框中是/否按钮而不是确定/取消?

    In an Adobe AIR HTML JS app is it possible to display Yes No buttons instead of OK Cancel in a confirm dialog 任何可以与webki
  • Android:从HOME重新启动后保留任务的活动堆栈

    我的应用程序有两项活动 我按以下顺序开始 HOME gt A gt B 现在我按 HOME 并再次启动 A 我希望在 A 顶部看到活动 B 但我得到的是 A 因此活动堆栈被清除 显现
  • 如何使用 JavaScript / Tone.js 更改音调和播放速率?

    我想同时完成两件事 1 改变播放速率声音文件的速度为 1 2 2 降低pitch五分之一 最后 我不想使用单独的按钮来播放结果将其连接到音频标签并使用那里的播放按钮 下面是我迄今为止使用 Tone js 得到的最接近的结果 我真的很难处理文
  • 使用 jQuery 创建 HTML 元素最有效的方法是什么?

    最近我做了很多模态窗口弹出窗口之类的事情 我使用了 jQuery 我用来在页面上创建新元素的方法绝大多数是沿着以下路线 div div 但是 我感觉这不是最好或最有效的方法 从性能角度来看 在 jQuery 中创建元素的最佳方法是什么 这个
  • 具有位字段的结构中的偏移量

    如果我们有一个带有位字段的结构体 那么结构体中的后续成员如何对齐 考虑以下代码 struct A int a 1 char b at offset 1 struct B int a 16 int b 17 char c at offset
  • 如何从当前文件夹旁边的文件夹导入模块?

    我已经检查了尽可能多的页面 并尝试了我找到的所有内容 但没有一个成功 我还检查了有关导入的 PEP 页面并尝试了每个示例 但没有一个起作用 我有一个包含单元测试的测试文件夹 我需要导入我想要测试的模块 这些模块位于 src 文件夹旁边的名为