文章是从stackoverflow翻译过来的,原文地址:Relative imports for the billionth time 本文要在原理上解决  python当中相对包导入出现的问题. 问题描述 在win7.32位的电脑上,运行python2.7.3,经常会出现"Attempted relative import in non-package"这样的问题. 为了解决这个问题,我(提问的人)搜索了以下网站,当然还有更多的网站 http://www.python.org/dev…
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("I…
显示这个错误可能有两个原因: 1.文件夹中没有包含__init__.py文件,该文件可以为空,但必须存在该文件. 2.把该文件当成主函数入口,该文件所在文件夹不能被解释器视作package,所以可能导致相对路径错误. 解决方法: 1.添加__init__.py文件 2.更改主函数入口位置,或者是导入路径,from . import导入当前文件夹,from .. import导入上级文件夹…
这一篇应该是解释的比较清楚: http://stackoverflow.com/questions/14664313/attempted-relative-import-in-non-package-although-packages-with-init-py-in 关键点是: 顶层的module运行时, 不能用相对导入, 即使顶层有init文件也不行.  因运行文件也在顶层, 看不到init的作用. 问题原因 不能在一个包里运行一个脚本文件,顶层的脚本文件不能用相对导入.如果要将一个包作为一个…
python 项目 在pycharm中, 在某个文件夹下: 右键--> mark directory as --> source root 如何在python脚本或者shell中 用代码实现 pycharm的文件夹 mark directory as source root的操作 Mark directory as source root 目的是修改程序的 PYTHONPATH,从而影响程序运行时的模块路径.这是 PyCharm 的行为,不清楚你要它干什么.要实现同样目的的话,从脚本里直接修改…
包含相对路径import的python脚本不能直接运行,只能作为module被引用. 例如 from . import mod1 有这样代码的文件只能最为moulule为不能直接运行.相对路径就是相对于module的路径,如果直接运行脚本,这个module的那么就是"main",而不是module原来的name,这样相对路径就不是原来的相对路径了,导入就会失败,出现 ValueError: Attempted relative import in non-package ok you…
problem:Attempted relative import in non-package 所谓相对路径其实就是相对于当前module的路径,但如果直接执行脚本,这个module的name就是“__main__”, 而不是module原来的name, 这样相对路径也就不是原来的相对路径了,导入就会失败,出现错误“ValueError: Attempted relative import in non-package” solve: 方法1:把src目录加入到sys.path里去 方法2:把…
Python工程:ImportError: attempted relative import with no known parent package 解决方法: 1.对每个目录创建的时候都选择创建Python模块而不只是创建文件夹(最好自动创建__init__.py文件,或者查看PYCharm工具的图标有无改变,否则手动可能名字打错会调试很久) 2.引入目录的时候使用尽量使用绝对路径引入(from xxx import yyy:xxx前面不带小数点) 原因解释:ImportError:att…
前言 在这篇文章中,我将会解析 ImportError: attempted relative import with no known parent package 这个异常的原因.当你在运行的python脚本.使用了相对引用方式 (类似import ..module) 去引用包时,可能会出现这个异常. 让我们来看看发生这个异常的例子. 问题 假设你有以下目录结构: project ├── config.py └── demos ├── __init__.py └── demo.py conf…
执行:python deom/scripts/populate.py ValueError: Attempted relative import in non-package solve:python import时采用了相对路径,使用-m运行 执行: python -m demo.scripts.populate 参考:http://my.oschina.net/leopardsaga/blog/97175 1. 从查到的资料来看,关于import路径的来说,分成3类: absolute im…