Python:在祖父母目录中导入文件

2024-01-03

等级制度:

scripts/
    web/
        script1.py
    tests/
        script2.py
common/
    utils.py

我如何在 script1 和 script2 中导入 utils,并且仍然能够单独运行这些脚本(即,python script1.py)。我会在哪里放置__init__.py文件,这是解决这个问题的正确方法吗?谢谢你!


package/
    __init__.py
    scripts/
        web/
            __init__.py
            script1.py
        tests/
            __init__.py
            script2.py
    common/
        __init__.py
        utils.py

我添加了一堆空的__init__.py文件到您的包中。现在你有2个选择,你可以使用绝对导入:

 from package.common import utils

或等价:

 import package.common.utils as utils

这里的缺点是package必须以某种方式开启PYTHONPATH。另一种选择是使用相对进口 http://docs.python.org/2/whatsnew/2.5.html#pep-328-absolute-and-relative-imports:

from ....common import utils

我通常不鼓励这种方法......很难判断事情来自哪里(是 4 个周期还是 6 个周期?)。

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

Python:在祖父母目录中导入文件 的相关文章

随机推荐

  • 在 JavaFX 中使用数据库填充表视图

    我开始学习 javaFX 我需要用数据库中的数据填充表 我在网上阅读了很多代码 但没有找到我想要的东西 我读this http pastebin com S0Fg9jK8但我不知道如何实现最后一个功能 我阅读了一些其他代码来做到这一点 到目
  • Java:实现无符号 128 位整数

    首先我应该问 有谁知道 Java 的当前实现 128b UINT 吗 我需要一些东西来保持自然的基本价值观 即 一个巨大的柜台 我知道 BigIntegers 它很慢而且不可变 128b UINT 有意义 我正在考虑使用一对原始长整型来实现
  • Regex101 与 JavaScript String.match 分歧

    这个正则表达式 w g应该匹配每个单词字符between大括号 相反 我得到了不同的结果Regex101 JavaScript 引擎 https regex101 com r iD4uP6 1 and Chrome 控制台 Regex101
  • MongoEngine - 另一个用户已通过此数据库的身份验证。您必须先退出

    谁能解释一下为什么我收到错误另一个用户已通过此数据库的身份验证 您必须先退出当使用连接到 MongoDB 时Flask Mongo引擎 https github com MongoEngine flask mongoengine from
  • 在 Prolog 中断言数字谓词

    Prolog 中是否有可能断言代表数字的事实 例如 我想使用谓词distance 2并断言诸如distance town1 city2 1200 The distance town1 city2 1200term 是该术语的语法糖 dist
  • 如何引导 log4j 输出,以便不同的日志级别发送到不同的附加程序?

    是否可以将 debug 和 info 输出写入控制台 而 info 输出仅写入某个日志文件 例如 给定以下日志记录 LOG debug fileContent LOG info fileLength 对应的是什么log4j xml看起来像
  • MongoDB,如何对文档进行分组

    我的收藏有这样的数据 code 1 location 1 QUEEN STREET id 1 code 1 location 2 KING STREET id 2 code 2 location 1 QUEEN STREET id 3 co
  • 不请求Window.FEATURE_ACTION_BAR问题

    我正在尝试构建我的应用程序 但没有成功 我尝试了多种方法 但没有任何效果 例外的是 Caused by java lang IllegalStateException This Activity already has an action
  • 如何创建一个不可销毁的实例

    想象一下我有一堂课 TCantBeDestroyed 有人知道如何直接创建一种在两种情况下都不能被销毁的实例 不能被毁坏 免费 CantBeDestroyed Destroy 并且不能被演员摧毁 TObject CantBeDestroye
  • 根据时间序列数据帧的时间列更正日期列中的条目

    我有一个时间序列数据框 它包含三列 日期 时间和值 它看起来像这样 date time value 11 03 2020 1103 5 11 03 2020 0000 10 11 03 2020 0100 6 12 03 2020 0201
  • 层次聚类大稀疏距离矩阵 R

    我试图在非常大的距离上执行 fastclust 但遇到了问题 我有一个非常大的 csv 文件 大约 9100 万行 因此 for 循环在 R 中花费太长时间 其中包含关键字 大约 50 000 个唯一关键字 之间的相似性 当我读入 data
  • sfErrorNotifierPlugin:“默认”上下文不存在

    我已经安装了sfErrorNotifierPlugin 当两个选项reportErrors reportPHPErrorsreportPHPWarnings reportWarnings都设置为false时 一切正常 但我想捕获 PHP 异
  • 删除前导 0 直至小数点

    我想删除小数中的前导零 所以我想要的输出应该是 324 not 0 324 我试过str replaceFirst 0 没用 我也尝试了正则表达式 没有结果 是的 我正在使用 BigDecimal Try this str str repl
  • 发布到数据:url — 有任何用例吗?

    在当前的 HTML5 规范中 可以POST具有数据方案的动作的表单 http www w3 org TR 2011 WD html5 20110525 association of controls and forms html form
  • Android解析json数据并添加搜索功能

    抱歉我的英语不好 我是 android 新手 我将 json 数据解析到 listview 中 现在我想给他添加一个搜索功能 但我有一个问题 当我在 edittext 中输入单词时 然后在 listview 中输入我的项目是重复的 并且项目
  • R 一元运算符重载:风险?

    在我不断寻求避免在一些简单命令中使用括号的过程中 我编写了以下运算符来创建新的图形窗口 我的问题是 除了明显无法在变量 newdev 上执行 not 函数之外 我是否面临 破坏 R 中任何内容的风险 function to overload
  • BASH:根据公共字段名称连接 2 个 CSV 文件

    我有 2 个 CSV 文件 我需要使用 BASH 连接它们 file 1 csv columns track id title song id release artist id artist mbid artist name durati
  • 从 OpenJDK Windows 创建 jre

    我们正在从 Oracle JDK JRE 切换到 OpenJDK 现在我只找到了 JDK 但我还想从 OpenJDK 获得 JRE 这是为了在客户端上安装我们的应用程序 而不需要完整的 JDK 有没有办法从 OpenJDK for Wind
  • git 过滤器分支到 git 过滤器存储库转换

    我按照此命令对 git 存储库中的所有提交执行更漂亮的操作 git filter branch tree filter prettier write js echo Error formatting possibly invalid JS
  • Python:在祖父母目录中导入文件

    等级制度 scripts web script1 py tests script2 py common utils py 我如何在 script1 和 script2 中导入 utils 并且仍然能够单独运行这些脚本 即 python sc