资料参考: https://www.cnblogs.com/ArsenalfanInECNU/p/5346751.html

在python导入包,如下:

from .units import *

经常出现错误:

SystemError: Parent module '' not loaded, cannot perform relative import

ValueError: attempted relative import beyond top-level package

其原因在相对导入时,package所对应的文件夹必须正确的被python解释器视作package,而不是普通文件夹。否则无法利用package之间的嵌套关系,从而无法实现python中包的相对导入。

文件夹被python解释器视作package需要满足两个条件:

 1、文件夹中必须有__init__.py文件,该文件可以为空,但必须存在该文件。

 2、不能作为顶层模块来执行该文件夹中的py文件(即不能作为主函数的入口)。

对于第一个条件问题直接新建一个空白__init__.py文件即可,对于第二个条件问题,可以新建一个包,将需要直接执行的文件及关联文件拖入包中,比如新建一个包package,拖入后,问题导入代码变为:

from package.units import *

这时可以正确导入。

Python包的相对导入时出现问题解决的更多相关文章

  1. Python包的相对导入时出现错误的解决方法

    在练习Python中package的相对导入时,即 from . import XXX 或者 from .. import XXX 时会遇到这样两个错误: SystemError: Parent mo ...

  2. Python 包的相对导入讲解

    [Python 包的相对导入讲解] 参考:http://www.dai3.com/python-import.html

  3. Python 包内的导入问题(绝对导入和相对导入)

    基本概念 Python 中的包,即包含 __init__.py 文件的文件夹. 对于 Python 的包内导入,即包内模块导入包内模块,存在绝对导入和相对导入问题. 普通 Python 模块的搜索路径 ...

  4. python包与模块导入

    一 .module 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc&quo ...

  5. python 包以及循环导入

    包的认识 包通过文件夹来管理一系列功能相近的模块 包:一系列模块的集合体重点:包中一定有一个专门用来管理包中所有模块的文件包名:存放一系列模块的文件夹名字包名(包对象)存放的是管理模块的那个文件的地址 ...

  6. pycharm导入python包

    总步骤:file --> settings --> poject interpreter --> 点击加号 --> 搜索需要导入的python包 --> 选中需要导入的p ...

  7. python包导入细节

    包导入格式 导入模块时除了使用模块名进行导入,还可以使用目录名进行导入.例如,在sys.path路径下,有一个dir1/dir2/mod.py模块,那么在任意位置处都可以使用下面这种方式导入这个模块. ...

  8. 【转】python包导入细节

    [转]python包导入细节 包导入格式 导入模块时除了使用模块名进行导入,还可以使用目录名进行导入.例如,在sys.path路径下,有一个dir1/dir2/mod.py模块,那么在任意位置处都可以 ...

  9. 第10.8节 Python包的导入方式详解

    一. 包导入与模块导入的关系 由于包本质上是模块,其实对模块的许多导入方法都适用于包,但由于包的结构与模块有差异,所以二者还是有些区别的: 对包的导入,实际上就是包目录下的__init__.py文件的 ...

随机推荐

  1. GitHub 优秀的 Android 开源项目 (精品)

    1原文地址为 http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea Android开源项目系列汇总已完成,包 ...

  2. 域名打开没有加上“http://”,导致报错{"code":-32603,"message":"Cannot navigate to invalid URL"}

    1.在robotframework中写用例 Open Browser  192.168.4.110:8880/jwzh  Chrome 2.没有写http:// 3.导致报错 4.正确写法应该是 Op ...

  3. Matconvnet安装

    本文主要介绍Linux下Matconvnet的安装注意事项. 最近帮老师校验一份超分的代码,用到了matconvnet深度学习工具包.代码里面使用的是Matconvnet-1.0-beta20版本, ...

  4. 给大家推荐一个C#下的Ribbon风格的Forms实现示例-含源码

    C#下的Ribbon风格的Forms实现示例:源码下载地址

  5. Linux:CentOS7.4新建用户并授权

    之前买了一台阿里云服务器,准备用来搭建一些服务,由于使用root用户登录进行操作比较敏感,就新建了一个用户,用来登录并进行日常操作. 这篇博客,介绍下centos7.4下如何新建用户并且授权... 一 ...

  6. 【C#复习总结】细说表达式树

    1 前言 系类1:细说委托 系类2:细说匿名方法 系列3:细说Lambda表达式 系列4:细说泛型委托 系列5:细说表达式树 系列6:细说事件 涛声依旧,再续前言,接着用大佬的文章作为开头. 表达式树 ...

  7. Faster R-CNN:详解目标检测的实现过程

    本文详细解释了 Faster R-CNN 的网络架构和工作流,一步步带领读者理解目标检测的工作原理,作者本人也提供了 Luminoth 实现,供大家参考.   Luminoth 实现:https:// ...

  8. Java Arrays工具类的使用

    Arrays 类 java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.具有以下功能: 给数组赋值:通过fill方法. 对数组排序:通过sort方法,按升序. 比较数组:通过 ...

  9. Karen and Game CodeForces - 816C (暴力+构造)

    On the way to school, Karen became fixated on the puzzle game on her phone! The game is played as fo ...

  10. mysql触发器,视图,游标

    什么事触发器: 触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的.它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化.可以联级运算.如,某表上的 ...