首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python引入模块报错ValueError: attempted relative import beyond top-level package

在练习Python中package的相对导入时,即 from . import XXX or from .. import XXX   时会遇到这样两个错误: SystemError: Parent module...'' not loaded, cannot perform relative importValueError: attempted relative import beyond top-level...package 其实这两个错误的原因归根结底是一样的:在涉及到相对导入时,package所对应的文件夹必须正确的被python解释器视作package,而不是普通文件夹。...补充:在”from YY import XX”这样的代码中,无论是XX还是YY,只要被python解释器视作package,就会首先调用该package的__init__.py文件。...如果都是package,则调用顺序是YY,XX。 另外,练习中“from . import XXX”和“from .. import XXX”中的’.’和’..’

32.5K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python 路径管理以及常见报错

    工作目录 当前执行命令所在的目录 # 将工作目录添加进当前的路径列表 sys.path.append(os.getcwd()) 路径列表 查看当前路径列表 只有在路径列表当中的包和模块才可以导入和调用 import...自定义包和内置包名有冲突 修改包名即可 导入的不是一个包 `ModuleNotFoundError: No module named '__main__.jd_parser'; '__main__' is no t a package...` 入口程序不可以使用相对路径 __main__ 主程序模块名会被修改为__main__ ValueError: attempted relative import beyond top-level package...当前访问路径已经超过了python已知的最大路径 from tutorial_2.jd_crawler.jd_parser.search import parse_jd_item top-level...package 指的是上述from导入命令中的首路径tutorial_2, 而不是根据目录结构 把工作目录加入到路径列表当中 进入到项目根目录下执行命令 上述两个操作相当于将项目根目录加入到路径列表当中

    1.3K20

    Python的绝对导入和相对导入

    但是存在相对导入语句的模块,不能直接运行,否则会有异常:ValueError: Attempted relative import in non-package如果是绝对导入,一个模块只能导入自身的子模块或和它的顶层模块同级别的模块及其子模块..."Y __name__", __name__当我们直接运行 python sub_pkg1/moduleX.py的时候,会报错ValueError: Attempted relative import...有两种方式加载一个 py 文件:作为 top-level 脚本 作为 top-level 脚本指的是直接运行脚本,比如 python myfile.py。...例如,moduleX 被 import 进来,它的名字就是 package.subpackage1.moduleX。如果 import 了 moduleA,它的名字是 package.moduleA。...,而是指禁用 implicit relative import(隐式相对导入), 但并不会禁掉 explicit relative import(显示相对导入)。

    4.3K21

    Python的包导入机制

    当在模块包中使用import语句的时候,不同的语法会导致不同的模块搜索导入方式,常见的导入方式如下: 绝对导入(absolute import) 显式相对导入(explicit relative import...Relative Import And Absolute Import 假设如下的import语句: import string 这个string是当前目录下的string模块呢,还是在标准库的string...同时值得注意的是,显式的相对导入是根据模块的__name__属性来确定相对位置的,因此如果是在top level script中,显式相对导入并不能使用,会报出如下错误: ValueError: Attempted...relative import in non-package 当然,在PEP 366 – Main module explicit relative imports中,也给出了在Python中执行非包内的模块...(作为top level脚本执行)使用显示相对导入的方法:在执行python命令时加上-m选项,此时就会启用模块的__package__属性。

    1.3K10

    Python 的 import 是怎么工作的?

    attempted relative import with no known parent package 导入同一个目录的模块和不同的目录的模块是完全不同的,本文通过分析使用 import 经常遇到的一些问题...主要内容: 0、什么是模块(module),什么是包(package) 1、import 时发生了什么 2、什么时候用相对导入,什么时候用绝对导入 3、一个自定义包的例子 0、什么是模块(module)...包(package) 模块与包的关系,可以类比文件和目录,包就是目录。 package 里面可以有 module,也可以有子包(sub-package)。...file3 print("This is file4.py") 只要我们直接运行 file4.py,那是一定会报错的: Python 提示我们: ImportError: attempted relative...import with no known parent package 也就是说相对导入不知道父包是谁,换句话说,这是一个子包,必须让父包来调用它,直接运行这个文件是不行的,即使你在 file4.py

    76710
    领券