Python 相对导入attempted relative import beyond top-level package
ValueError: attempted relative import beyond top-level package
假设有如下层次包目录
project/
__init__.py
mypackage/
__init__.py
A/
__init__.py
spam.py #* print("In spam") *#
grok.py #* print("In grok") *#
C/
__init__.py
hello.py #* print("In hello") *#
B/
__init__.py
bar.py #* print("In bar") *#
run.py
main.py
相对导入语法
from . import module
from .. import module
from ... import module
- run.py作为顶层模块执行导入A.spam时
- run.py的__name__ 等于 __main__
- spam.py的__name__ 等于 A.spam
- A成为顶层的包,所以相对导入最多只能访问到A,A之外的层次结构是不可见的
- main.py作为顶层模块执行导入mypackage.A.spam是
- main.py的 __name__ 为 __main__
- spam.py的__name__ 为 mypackage.A.spam
- mypackage成为顶层包,相对导入作用域扩大,B/包对spam.py可见
- 如果将run.py当作顶层执行模块
- A/ 和 B/ 将成为 toplevel package 顶层包 A/中的模块不能用相对导入来导入B/包中的模块,因为不能越过顶层包。
- A/、B/ 包中的目录可以导入本包中及以下的模块
- 如果将main.py当作顶层执行模块
- mypackage/成为顶层包,A/可以访问到B/包,不会出现 ValueError: attempted relative import beyond top-level package
例子
## run.py (run.py当作顶层执行模块,即 python run.py)
#----------- import A.spam ## spam.py
#-------------- from . import grok # ok
from .C import hello # ok
from ..B import bar # !Err
##—— ValueError: attempted relative import beyond top-level package
print('In spam') ## main.py
#------------ import mypackage.A.spam ## spam.py
#------------- from ..B import bar # ok
print('In spam')
Python 相对导入attempted relative import beyond top-level package的更多相关文章
- python相对包导入报“Attempted relative import in non-package”错误
文章是从stackoverflow翻译过来的,原文地址:Relative imports for the billionth time 本文要在原理上解决 python当中相对包导入出现的问题. 问 ...
- python:Attempted relative import in non-package
problem:Attempted relative import in non-package 所谓相对路径其实就是相对于当前module的路径,但如果直接执行脚本,这个module的name就是“ ...
- Python ValueError: Attempted relative import in non-package Relative import相对引用 错误
包含相对路径import的python脚本不能直接运行,只能作为module被引用. 例如 from . import mod1 有这样代码的文件只能最为moulule为不能直接运行.相对路径就是相对 ...
- Python工程:ImportError: attempted relative import with no known parent package
Python工程:ImportError: attempted relative import with no known parent package 解决方法: 1.对每个目录创建的时候都选择创建 ...
- 执行代码出现ImportError:attempted relative import with no known parent package
前言 在这篇文章中,我将会解析 ImportError: attempted relative import with no known parent package 这个异常的原因.当你在运行的py ...
- ValueError: Attempted relative import in non-package
执行:python deom/scripts/populate.py ValueError: Attempted relative import in non-package solve:python ...
- Python导入自定义类时显示错误:attempted relative import beyond top-level package
显示这个错误可能有两个原因: 1.文件夹中没有包含__init__.py文件,该文件可以为空,但必须存在该文件. 2.把该文件当成主函数入口,该文件所在文件夹不能被解释器视作package,所以可能导 ...
- 相对导入中Attempted relative import in non-package问题
这一篇应该是解释的比较清楚: http://stackoverflow.com/questions/14664313/attempted-relative-import-in-non-package- ...
- python引入pytesseract报错:ValueError: Attempted relative import in non-package
http://blog.csdn.net/yifengfuxue/article/details/79015651
随机推荐
- K8s中的多容器Pod和Pod内容器间通信
容器(Container)常被用来解决比如微服务的单个问题,但在实际场景中,问题的解决往往需要多容器方案.本文会讨论将多个容器整合进单个Kubernetes Pod 中,以及Pod中的容器之间是如何通 ...
- LG4720 【模板】扩展卢卡斯定理
扩展卢卡斯定理 求 \(C_n^m \bmod{p}\),其中 \(C\) 为组合数. \(1≤m≤n≤10^{18},2≤p≤1000000\) ,不保证 \(p\) 是质数. Fading的题解 ...
- CloudCompare 的简单的使用说明
来自:https://blog.csdn.net/datase/article/details/79797795 File open:打开 save:保存 Global Shift settings: ...
- 运算符 & | ^ ~ >> << 讲解
字节”是byte,“位”是bit :1 byte = 8 bit : char 在java中是2个字节.java采用unicode,2个字节(16位)来表示一个字符. char 16位2个字节 byt ...
- C void的指针 强制类型转换(int*)p 把变量指针p强制转换成指向int类型的指针
#include <stdio.h> int main(void){ void *p; int a = 14322; char c ='A'; p = &a; //p = & ...
- cf 911F 树的直径+贪心
$des$ 给定一棵 n 个节点的树,你可以进行 n ? 1 次操作,每次操作步骤如下:选择 u,v 两个度数为 1 的节点.将 u,v 之间的距离加到 ans 上.将 u 从树上删除.求一个操作序列 ...
- GoCN每日新闻(2019-09-26)
1. go-gin-api 路由中间件:Jaeger 链路追踪(六)https://mp.weixin.qq.com/s/Ea28475_UTNaM9RNfgPqJA2. golang interfa ...
- [loj 2478][luogu P4843]「九省联考 2018」林克卡特树
传送门 Description 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战. 游戏中有一 ...
- Hbase监控指标项
名词解释 JMX:Java Management Extensions,用于用于Java程序扩展监控和管理项 GC:Garbage Collection,垃圾收集,垃圾回收机制 指标项来源 主机名 u ...
- FLUENT求解传热系数surfaceheattransfercoef.的参考值的设置【转载】
转载自:http://blog.sina.com.cn/s/blog_7ef78d170101ch30.html surface heat transfer coef. 计算公式: FLUENT求解传 ...