Python 同级目录兄弟目录调用

看书看得好好的,一写代码就出错!!!

这个问题是大家初学Python的时候会遇到的一个很常见的问题,然后我们去搜网上的教程,自己试一试还是都是BUG,常见的就是这两个命令:

ModuleNotFoundError: No module named 'XXXXXXX'
ImportError: attempted relative import with no kNown parent package

教程一般都是很详细的给你分析,然后给你井不同文件调用,其实整那么多没事的干嘛是不是,我们要的只是解决办法。

详细解释

注意

1、我只说兄弟的文件夹下面的调用,父子啥的__init__.py 搜一搜就可以了
2、不要用Vscode ,Vscode的环境变量你是整不明白的
3、我没太多的时间花费在博客上,所以遇到啥才会去扩充啥,大家也可以在下面留言遇到的问题和解决的办法
4、可能我说的也会有错误,但我主要的是解决我自己遇到的问题

开始上代码

目录结构

在这里插入图片描述

a1.py

def a1_print():
    print("a1_print  OK")

b1.py


from ..a.a1 import a1_print

a1_print()

运行b1.py,报错

在这里插入图片描述

ImportError: attempted relative import with no kNown parent package

原因

文件夹被python解释器视作package需要满足两个条件:

  1. 文件夹中必须有__init__.py文件,该文件可以为空,但必须存在。
  2. 不能作为顶层模块来执行该文件夹中的py文件,即使用…的文件夹外边还需要有包含__init__.py的文件(即不能作为主函数的入口)

主就是 不能作为主函数的入口,兄弟引用不能作为入口,意思是你不能直接运行b1.py,你可以在c1.py 这样弄,b1.py 不可以 不可以 不可以

我非要咋解决

修改b1.py

import sys# 加了这了
sys.path.append("..")  ## 这个
from a.a1 import a1_print  #改了这个
a1_print()

输出

在这里插入图片描述

BUG

Pycharm

在这里插入图片描述

我觉得还是不管它吧,能运行就不错了,没有啥影响,有解决办法的大哥贴一下。

不要用Vscode

不要用Vscode

不要用Vscode

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...