• VsCode import自己写的包各种报错解决方案2022.9


    2023-04-06更新

    再补充一下!!如果你写的是一个系统的代码,就是说你主文件调用了其他文件,被调用的文件也调用了别的文件,那么只需要在主文件开头加上

    1. import sys
    2. sys.path.append("..") # 这个具体的相对路径最好写成你这个系统的整体文件夹路径

     被调用的那些文件不用再写一遍,否则会导致混乱。

    2022-11-14更新

    发现相对引用还是只能引用兄弟文件或者子孙文件。不能引用父目录及以上的文件。

    父目录的文件必须先

    1. import sys
    2. sys.path.append("..")

     然后就可以根据当前路径的父路径计算相对路径。


    2022-11-4更新

    之前说的【思想】依然是对的,不过有点谬误。

    VsCode中的“当前根路径”是动态变化的。

    比如jupyter中,

     在【终端】的当前路径是它显示的位置。

    而在【jupyter】中的当前路径却不一定,比如图上是这个文件夹的路径。

    **VsCode中相对路径要根据当前的真实路径进行相对计算**

    而当前的真实路径不一定是当前文件的路径,要看当前文件运行环境的情况,有可能是他的父文件夹,也有可能是整个窗口的home根路径。 


    报错内容,不外乎以下几种

    1. ValueError: attempted relative import beyond top-level package
    2. # 翻译:试图在顶级包之外进行相对导入
    3. ImportError: attempted relative import with no known parent package
    4. # 翻译:尝试相对导入,但没有已知的父包
    5. ValueError: Attempted relative import in non-package
    6. # 翻译:试图在非包中进行相对导入
    7. SystemError: Parent module '' not loaded, cannot perform relative import
    8. # 翻译:父模块'xxx'未加载,不能执行相对导入。

     网上说的有1.修改setting文件的(x),2.python文件顶部添加sys(x),3.还有什么用绝对路径的(x)全都是错的。

    这些有啥用??难道以后每次写一个项目就要改一次环境变量?难道以后每次import自己写的包都要写绝对路径?难道每次都要在每一个python文件头添加sys???

    实际上,Vscode并不是网上说的本身不会检索工作空间的python文件,只是它定义的当前运行状态的根目录不是通俗理解的那个路径!

     比如说,目前要运行的主文件是train.py

    那么Vscode认为根目录就是train.py的父目录,也就是bert_pytorch

    case 1:在将要运行的主文件中import和主文件是【兄弟文件夹/兄弟文件】中的module就是直接import 兄弟名    【【绝对路径】】

    如果在主文件中用【【相对路径】】就会报错②

    case 2:主文件代码内部涉及到调用其他文件,既可以用相对于【主文件的父目录】的绝对路径,也可以用当前python文件的相对路径。

    比如当主文件中import了兄弟文件夹中的bert.py文件时,在bert.py文件中import其他包既可以用“相对于【主文件的父目录】的绝对路径”,也可以用“相对于bert.py的相对路径”。

     

  • 相关阅读:
    ElasticSearch - 基础概念,以及和 mysql 的对比
    【vue3】匿名插槽,具名插槽,作用域插槽,动态插槽
    鸿蒙原生应用开发-DevEco Studio本地模拟器的使用
    1086 就不告诉你
    使用maven 3.8.3 创建并运行java web项目
    华为开源自研AI框架昇思MindSpore应用实践:DCGAN生成漫画头像
    Spring Boot 中的 @CacheEvict 注解使用
    webrtc ios build signing
    Vue - 实现获取手机验证码倒计时 60 秒(手机号+验证码登录功能)
    剑指 Offer 10- II. 青蛙跳台阶问题
  • 原文地址:https://blog.csdn.net/zoe9698/article/details/126706338