我知道我迟到了,但我想我找到了解决这个问题的办法。希望这对从事大型Python项目的其他人有用。

诀窍是尝试一种导入格式,如果第一种格式失败,则返回到另一种格式。

方法1

db.pytry:

# Assume we're a sub-module in a package.

from . import models

except ImportError:

# Apparently no higher-level package has been imported, fall back to a local import.

import models

另一方面,这种方法非常简单,但伸缩性不好(模块名重复)。可以通过编程方式导入来改进缩放。

方法2(不推荐)

db.pyimport importlib

root = 'project.modules.core'

my_modules = ['core', 'models']

for m in my_modules

try:

globals()[m] = importlib.import_module(root + '.' + m)

except ImportError:

globals()[m] = importlib.import_module(m)

当然,现在这个功能需要在每个模块中复制。我不确定这是否真的比第一种方法有所改进。但是,您可以将此逻辑分离到它自己的独立包中,该包位于pythonpath上的某个位置。

方法3

包装进口商.pyimport importlib

def import_module(global_vars, root, modules):

for m in modules

try:

global_vars[m] = importlib.import_module(root + '.' + m)

except ImportError:

global_vars[m] = importlib.import_module(m)

db.pyimport package_importer

root = 'project.modules.core'

my_modules = ['core', 'models']

package_importer.import_module(globals(), root, my_modules)

pythoninterp error_从Python Interp运行时获取“importterror:尝试使用未知父包进行相对导入”...相关推荐

  1. 【解决】Python程序运行时所占内存越来越大

    1.问题描述 最近在用Python(Pyqt5)编写一个可以获取gpu信息(功耗.显存占用.利用率等)并将这些信息保存成csv文件的程序.在程序编写完成后,运行时却发现,随着程序的运行,所占用的内存每 ...

  2. gettype获取类名_在TypeScript中运行时获取对象的类名

    在TypeScript中运行时获取对象的类名 是否可以使用typescript在运行时获取对象的类/类型名称? class MyClass{} var instance = new MyClass() ...

  3. java hibernate方言_java – 如何在运行时获取Hibernate方言

    在我的应用程序中,我使用Hibernate与SQL Server数据库,所以我设置 在我的persistence.xml中. 在某些情况下,我想用NULL包括排序记录,我使用关键字NULLS FIRS ...

  4. java 获取运行时参数,Java8增强反射可以在运行时获取参数名

    技术公众号:Java In Mind(Java_In_Mind),欢迎关注! 原文:Java8增强反射可以在运行时获取参数名 介绍 在JDK增强意见:JPE 118:Access to Paramet ...

  5. java 运行时获取泛型真实类型

    前情提要 本文章用于运行时获取泛型的具体类型,有一些情况下可以获取到真实类型,有一些情况下获取不到的情况. Class 类的两个方法 /*** Returns the {@code Class} re ...

  6. 使用Conda Pack打包Python独立运行时环境

    使用Conda Pack打包Python独立运行时环境 版本说明: python=2.7 Conda 的Pack工具,可以说是让我发现了新大陆.之前有个项目使用它解决了一个棘手的问题,一直没有整理相关 ...

  7. 如何在程序运行时获取 dpdk-16.04 大页使用情况?

    前言 基于 dpdk-16.04 开发的 dpdk 程序需要使用的大页内存总大小可以通过计算得出,但由于 dpdk-16.04 legacy memory 模型只支持物理地址连续的 segment 内 ...

  8. 1.Containerd容器运行时初识与尝试

    0x00 前言简述 1.基础介绍 2.专业术语 3.架构简述 0x01 安装配置 1.Ubuntu安装Containerd.io流程 0x02 简单使用 1.镜像拉取与运行 2.创建和使用网络 3.与 ...

  9. Unity中在运行时获取AnimationClip中的关键帧信息

    今天遇到一个制作动画路径的问题如下: 从题中可以看出物体路径受指定动画操控,我们不能改变控制方式,因此问题的重点在于如何从AnimationClip中获得位置每帧物体XYZ移动的位置信息,有了位置信息 ...

最新文章

  1. iOS - 在UITextField外部触摸时关闭键盘
  2. velocity 模板语言(VTL)
  3. Excel中文字换行
  4. PrestaShop物流跟踪模块
  5. (转)Spring Boot (十九):使用 Spring Boot Actuator 监控应用
  6. nginx每日日志切割脚本
  7. 汽车显示服务器出现异常,领克06车机网络异常怎么办?我们梳理了四种处理方法,建议牢记...
  8. 001如何将灰度视频处理为伪彩色
  9. 在苹果Mac上怎样使用鼠标来放大图像?
  10. 新浪邮箱下载的都是php,为什么我用新浪邮箱以及手机号码注册的支付宝能够登陆,但是用163邮箱的支付宝登陆数据库就会报错...
  11. Oracle Instance and Database
  12. Java的“小心心”
  13. 为啥现在还有人相信5G辐射危害健康?
  14. [FROM WOJ]#2040 山贼集团
  15. SpringCloud Stream @EnableBinding注解过时
  16. 一周Hard (2021.11.29-2021.12.05)
  17. JavaScript常用的工具方法
  18. 类似于#Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘length‘)
  19. css绝对定位后居中显示文字
  20. 基于GIS探究环境和生态因子对水体、土壤、大气污染物的影响

热门文章

  1. springboot图书管理怎么实现借书时间到期提醒_东和店镇第一小学图书数字化管理先进做法...
  2. SurfaceFlinger与Hardware Composer
  3. PulseAudio VS AudioFlinger(七)
  4. 传统蓝牙和Bluz低功耗蓝牙的区别
  5. 上海传音控股驱动开发笔试题
  6. 一张图看尽 Linux 内核运行原理
  7. Wpf之无法获取鼠标点击事件
  8. tensorflow之max_pool
  9. 钉钉扫码登录第三方_e签宝联合钉钉升级产品功能,共建企业服务生态闭环
  10. ❤️一分钟学会Python网络编程❤️