Python 3.5 与 Python 2.7:模块导入子模块

2023-11-26

过去几个小时我一直在谷歌上搜索这个问题,但在任何地方都找不到类似的问题。此外,2.7 和 3.5 的文档似乎相同,因此我认为这种行为没有记录。

这是我的目录结构:

project
    -- project.py
    -- api
        -- __init__.py
        -- subapi
            -- __init__.py

的内容project/project.py: import api

的内容project/api/__init__.py: import subapi

如果我执行python project.py(使用 python 2.7)从项目文件夹内部,它返回没有错误。如果我对 python 3 做同样的事情(python3 project.py),然后它崩溃了

Traceback (most recent call last):
  File "project.py", line 1, in <module>
    import api
  File "/home/me/Documents/project/api/__init__.py", line 1, in <module>
    import subapi
ImportError: No module named 'subapi'

如果我重写导入语句以使用相对于项目目录的路径(import api.subapi),然后它可以与 python 2 和 3 一起使用。但这不是一个令人满意的解决方案,因为这需要我从子模块中引用父模块,这有点违背了模块化的想法。

有谁知道我可以做什么来恢复 python2 的行为?模块搜索算法应优先使用 import 语句在文件的本地目录中进行搜索。顺便说一句,它还应该优先考虑这些文件高于内置模块。尝试导入模块“测试”..

- 编辑 - stackoverflow 要求我将我的问题与另一个名为“如何进行相对导入”的问题区分开来。我认为这个问题是不同的,因为我具体询问两个版本之间的差异。使用相对导入是解决方案,而不是问题。


使用显式相对导入:

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

Python 3.5 与 Python 2.7:模块导入子模块 的相关文章

  • Python生成随机数时出现属性错误

    我早些时候就同一段代码提出了类似的问题 但我再次发现自己陷入困境 特别是生成包含两个字母 两个数字 然后两个字母的车牌 我希望这个问题不是重复的 但在这种情况下 我非常不知道该怎么做 这是到目前为止的代码 我希望你能找出我哪里出错了 fro
  • 使用 JSON 将数据从 Python 导出到 Tableau?

    如何以表格形式从 Python 获取 400 万行和 28 列 我假设 基于搜索 我应该使用 JSON 格式 这种格式可以处理大量数据并且足够快 我制作了 12 行数据的子集并尝试使其正常工作 好消息是 它正在发挥作用 坏消息 不是我想要的
  • 将鼠标悬停在 Folium 的弹出窗口中

    用这样一个简单的例子 import folium map 1 folium Map location 45 372 121 6972 zoom start 12 tiles Stamen Terrain folium Marker 45 3
  • 如何在 Pandas 中用多个唯一字符串替换重复值?

    import pandas as pd import numpy as np data Name Tom Tom Jack Terry Age 20 21 19 18 df pd DataFrame data 假设我有一个如下所示的数据框
  • 尝试将行附加到按对象分组中的每个组时出现奇怪的行为

    这个问题是关于一个函数在应用于两个不同的数据帧时以意想不到的方式表现的 更准确地说 是 groupby 对象 要么是我遗漏了一些明显错误的东西 要么是 pandas 中存在错误 我编写了以下函数 将一行附加到 groupby 对象中的每个组
  • 在ubuntu中安装pyinterval

    我正在尝试安装 python 库 pyinterval 它需要 crlibm C 标头 我已安装该标头 没有错误 但似乎是问题的根源 当我跑步时 sudo easy install pyinterval 我得到以下信息 Searching
  • 如何在Tensorflow中读取json文件?

    我正在尝试编写一个函数 用于读取张量流中的 json 文件 json 文件具有以下结构 bounding box y 98 5 x 94 0 height 197 width 188 rotation yaw 27 970195770263
  • 从两个列表中查找总和等于 x 的 2 个数字的最快方法

    我的代码 n 3 a1 0 b1 10 a2 2 b2 2 if b1 gt n b1 n if b2 gt n b2 n diap1 x for x in range a1 b1 1 diap2 x for x in range a2 b
  • Keras ImageDataGenerator 验证分割未从打乱的数据集中选择

    如何将图像数据集随机拆分为训练数据集和验证数据集 更具体地说 validation splitKeras 中的论证ImageDataGenerator函数不是随机地将我的图像分割为训练和验证 而是从未洗牌的数据集中分割验证样本 当指定val
  • 如何从数据存储区刷新 NDB 实体?

    我希望能够在我的代码调用的测试中断言Model put 对于已修改的实体 不幸的是 似乎正在进行一些缓存 例如以下代码 from google appengine ext import ndb class MyModel ndb Model
  • python 使用曲面图和第四个变量的滑块可视化 4d 数据

    如何使用前 3 个变量和第四个变量的 3 维曲面图作为滑块来可视化 4 维数据 从 csv 文件加载 集 我写了一个非常小的示例 重点介绍了实现此目标的方法 import numpy as np import matplotlib pypl
  • 在 SQLAlchemy 中删除父级后删除子级

    我的问题如下 我有两个型号Entry and Tag通过 SQLAlchemy 中的多对多关系链接 现在我想删除所有Tag没有任何对应的Entry后Entry被删除 示例来说明我想要的内容 Entry 1带标签python java Ent
  • Pygame - 两个圆圈的碰撞检测

    我正在制作一个碰撞检测程序 其中我的光标是一个半径为 20 的圆 当它碰到另一个圆时应该将值更改为 TRUE 出于测试目的 我在屏幕中心有一个半径为 50 的固定圆 我可以测试光标圆是否击中固定圆 但它不能正常工作 因为它实际上是在测试它是
  • 将 Pandas DataFrame 和元数据保存为 JSON 格式

    我需要将 Pandas DataFrame 以及一些元数据保存到 JSON 格式的文件中 JSON 格式是必需的 背景 A 我可以使用 JSON 成功地读取 写入相当大的 Pandas DataframeDataFrame to json
  • Numpy 相当于 if/else 不带循环

    有没有任何Pythonic方法可以删除下面代码中的for循环和if else 此代码迭代 NumPy 数组并检查条件并根据条件更改值 gt gt gt import numpy as np gt gt gt x np random rand
  • 二进制补码扩展 python?

    我想知道是否有一种方法可以像在 Python 中的 C C 中一样使用标准库 最好在位数组上 进行二进制补码符号扩展 C C Example program include
  • Android Systrace 没有这样的文件或目录

    这是错误消息 D Programming Tools ADT bundle sdk platform tools systrace gt python systrace py Traceback most recent call last
  • Python:正则表达式 findall

    我使用 python 正则表达式从给定字符串中提取某些值 这是我的字符串 mystring txt sometext somemore text here some other text course course1 Id Name mar
  • python chaco轴标签时间格式

    在 Enthought 的 Chaco 中 TimeFormatter类用于格式化刻度的时间字符串 标签 有没有办法指定时间格式 类似于time strftime 源代码现在将显示月份和日期时的格式硬编码为美国风格 MMDD 我想添加一些灵
  • 命名空间与常规包

    命名空间 Python 包之间有什么区别 没有 init py 和一个常规的Python包 有一个 init py 特别是当 init py普通包裹是空的吗 我很好奇 因为最近我忘记了 init py在我制作的包中 我从未注意到任何问题 事

随机推荐

  • 如何设置 NSExtensionActivationRule 谓词?

    Even 人们比我聪明得多找到语法NSExtensionActivationRule神秘 但即使是像我这样的傻瓜也应该能够复制 粘贴示例 不是吗 不幸的是我什至无法得到苹果的例子上班 当您点击共享表按钮 下面的堆栈跟踪 时 我的操作扩展的主
  • 如何在 JavaScript 更改后重绘 SVG(Internet Explorer 和 Edge)

    有谁知道如何在更改内容后强制 IE 和 Edge 显示 刷新嵌入的 SVG 请参阅下面的代码
  • 如何杀死多进程中的所有池工作人员?

    我想停止单个工作人员的所有线程 我有一个有 10 个工作线程的线程池 def myfunction i print i if i 20 sys exit p multiprocessing Pool 10 init worker for i
  • 所有示例并发.futures 代码均因“BrokenProcessPool”而失败

    在创建我需要的实际应用程序之前 我试图对此有一个基本的了解 我最近从 2 7 升级到 3 3 直接复制粘贴这段代码来自 python 文档失败了 一个稍微简单的例子也是如此here 这是我的代码 源自第二个示例 import concurr
  • 通过属性版本控制在 Swagger 中利用 MultipleApiVersions

    使用属性路由时是否可以在 Swagger UI Swashbuckle 中利用 MultipleApiVersions 具体来说 我通过以下方式实现了版本控制 using System Web Http namespace RESTServ
  • Subversion - 始终使用我的解决一组文件的冲突

    我们在 subversion 中保留了大量自动生成的代码 有时我正在处理发电机的一个部件 而另一个同事正在处理发电机的另一个部件 我们中的一个人签到 另一个人得到最新的信息 现在我们生成的代码存在冲突 因为它是生成的 所以下次生成器运行时它
  • 获取总和最大的子矩阵?

    Input 二维数组 NxN 矩阵 具有正数和负数元素 Output 任意大小的子矩阵 其总和是所有可能的子矩阵中的最大值 要求 算法复杂度为O N 3 History 在算法师 Larry 的帮助下以及对 Kadane 算法的修改 我成功
  • java中查找字符串的所有大写字母

    所以我试图找到用户输入的字符串中的所有大写字母 但我不断收到此运行时错误 Exception in thread main java lang StringIndexOutOfBoundsException String index out
  • 删除特定匹配后的所有字符

    我正在使用 Notepad 从模式末尾删除一些不需要的字符串 这对我来说已经是我的生活了 我有以下几组字符串 myApp ComboPlaceHolderLabel myApp GridTitleLabel myApp SummaryLab
  • 使用 importlib 动态导入包含相对导入的模块

    我试图弄清楚如何以编程方式执行包含相对导入的模块 伪代码 spec importlib util spec from file location name path mod importlib util module from spec s
  • Xcode 和 XIB 自我文档 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有没有一个工具可以记录许多 Xcode 绑定 插座和IBAction绑定 键值绑定等 我看过以下主题Doxygen and 标题文档 但是这些文档程
  • 如何使用FirefoxProfile通过Firefox浏览器自动下载?

    我正在使用 selenium java 我需要下载 pdf 文件 我提到this this并且this答案在这里 但似乎在我的情况下没有任何效果 是否是由于设置了新的 Firefox 驱动程序实例 即System setProperty w
  • 有没有办法在 Visual Studio 中的 F# 中发出阴影值警告?

    对我来说 现有价值观的阴影如下所述 阴影和嵌套函数 F 中不可变 f 重复定义 FSharp 好玩又赚钱的评论 似乎违背了使 F 如此强大的不变性和类型安全的概念 F 中的阴影工作不同的比在 C 中 我花了相当长的时间才发现我的代码中的错误
  • 在 Haskell 中检索文件大小的 hFileSize 更快替代方案?

    我想知道如何以最少的开销获取 haskell 中文件的大小 现在我有以下代码 getFileSize FilePath gt IO Integer getFileSize x do handle lt openFile x ReadMode
  • PHP 数组的平均时间

    如何从一组时间中计算出平均时间 我有一个看起来像这样的数组 17 29 53 16 00 32 我希望达到这个结果16 45 12使用 PHP date H i s array sum array map strtotime array c
  • 如何在 Google Chrome 中查看 HTTP 标头?

    在 9 x 之前 标题位于开发人员工具中的资源下 但现在我在任何地方都找不到它 我不确定您的确切版本 但 Chrome 有一个 网络 选项卡 其中包含多个项目 当我单击它们时 我可以在选项卡右侧看到标题 Press F12 on windo
  • 我成功地从 C# 调用了 advapi32 的 LsaEnumerateAccountRights()。现在如何解组它返回的 LSA_UNICODE_STRING 数组?

    它是一个指向数组的指针LSA UNICODE STRING结构 我发现一些代码可以做相反的事情 即创建一个LSA UNICODE STRING来自 C 字符串 您可以在下面的帮助程序代码部分中看到这一点 我正在做什么 包括打电话给LsaEn
  • 入口 nginx 缓存

    我试图弄清楚如何使用 nginx 代理缓存和一些特定的规则 例如 当我托管 Ghost 或 Wordpress 时 我不想缓存管理部分 使用服务器片段 我尝试了很多不同的组合 但管理部分的缓存仍然存在问题 nginx ingress kub
  • 如何在 Grails 中创建包含所有 i18n 消息的映射

    我需要它在控制器中渲染它的一部分 例如 class MessageController def index def messageMap listAlli18nMessages the question render contentType
  • Python 3.5 与 Python 2.7:模块导入子模块

    过去几个小时我一直在谷歌上搜索这个问题 但在任何地方都找不到类似的问题 此外 2 7 和 3 5 的文档似乎相同 因此我认为这种行为没有记录 这是我的目录结构 project project py api init py subapi in