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
随机推荐
- mysql数据库中的多表查询(内连接,外连接,子查询)
用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版 ...
- HTTPS——https下的静态资源中如何使用http的地址
前言 今天在改博皮的时候,将一些图片上传到七牛,但是引入的时候出问题了,因为七牛cnd设置的不是https域名,所以加载资源的时候导致自动转为https请求. 步骤 错误的写法 background: ...
- Linux 物理机虚拟化
前言 我有一台安装了 RHCA 资源的磁盘,然而每次开机时需要切换启动项为该磁盘.于是我想将它实现物理虚拟化. 工具 Windows 10 RHCA Disk Virtualbox 5.1 Virtu ...
- js中检测类型问题
<script> // var str = '少壮不努力,老大徒伤悲'; // console.log(str instanceof String); // consol ...
- 011——MATLAB清除工作控件变量
(一):参考文献:https://zhidao.baidu.com/question/234530287.html 清除当前工作空间全部变量:clear: 清除当前工作空间某些变量:clear 变量名 ...
- learning java Math类
output: //取整,返回小于目标数的最大整数System.out.println(Math.floor(-1.2));// 取整,返回在于目标数的最大整数System.out.println(M ...
- centos vim 配置
centos 6.5使用源码安装vim 7.41.下载vim的源码.vim官网是www.vimunix.com/vim使用链接下载7.4源码包:ftp://ftp.vim.org/pub/vim/un ...
- SSM + ehcache 异常
异常如下: 十二月 26, 2017 1:24:44 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: At least one JAR was ...
- 【洛谷】P3177 [HAOI2015]树上染色
懒得复制题面了直接传送门吧 分析 直接求点与点之间的距离感觉不是很好求,所以我们考虑换一个求法. 瞄了一眼题解 距离跟路径上边的长度有关,所以我们直接来看每一条边的贡献吧(这谁想得到啊) 对于每一条边 ...
- 常见的医学基因筛查检测 | genetic testing | 相癌症早筛 | 液体活检
NIPT, Non-invasive Prenatal Testing - 无创产前基因检测 (学术名词) NIFTY,胎儿染色体异常无创产前基因检测 (注册商标)华大的明显产品 新生儿耳聋基因检测 ...