Python 同级目录(兄弟目录)调用方式

目录
  • 同级目录(兄弟目录)调用
    • 详细解释
    • 开始上代码
  • import同级目录报错

同级目录(兄弟目录)调用

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

这个问题是大家初学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需要满足两个条件:

  • 文件夹中必须有__init__.py文件,该文件可以为空,但必须存在。不能作为顶层模块来执行该文件夹中的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 

import同级目录报错

pycharm不会将当前文件目录自动加入自己的sourse_path。右键make_directory as-->Sources Root将当前工作的文件夹加入source_path就可以了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 在Python 不同级目录之间模块的调用方法

    Python的模块有自带的也有第三方,还可以自定义然后引用 1.调用自带的模块,例如,sys 调用自带的模块只需要import sys 引入既可以使用 2.第三方的需要先安装模块然后再import引入 3.自定义: (1)同级目录模块的调用 test -----t1.py -----t2.py -----test1 -----------testm.py -----test2 -----------testmm.py t1.py要调用t2.py中的模块: import t2 t2.func()

  • Python父目录、子目录的相互调用方法

    最近在使用Python的过程中经常遇到找不到该模块的问题.其中一个就是父目录子目录之间相互调用的情况.下面简单总结下. 我们在F:\Code文件夹下面创建一个test文件夹 而test文件夹里面如下 包含两个子目录 a.py def showdata(): print("this is a") def plus(): a=1 b=2 print(a+b) b.py def show(): print("this is b") 从父目路test.py调用a和b fro

  • 浅谈Pycharm调用同级目录下的py脚本bug

    环境:python3.5,pycharm2017.2.3 目录结构 a.py t=5 b.py from a import t print(t) 平台显示 出现红色波浪线警示. 强行运行 #Out: 5 仍然成功运行 总结 这可能是pycharm的bug(如果读者读取sys路径,会发现当前路径其实已经被包括). 所以读者无需理会该bug,强行运行即可. 唯一不舒服的地方就是没办法自动填写代码. 以上这篇浅谈Pycharm调用同级目录下的py脚本bug就是小编分享给大家的全部内容了,希望能给大家一

  • Python不同目录间进行模块调用的实现方法

    一.背景 之前写了软件开发目录规范这篇博客,相信很多人都已经知道,我们在写程序时需要遵循一定的规范,不然,就算很简答的逻辑程序的代码,读起来会很费劲,占用了我们大量的时间,但是,我们一旦用了这样的规范目录,我们怎么去愉快的进行模块之前的相互导入呢?这就不得不说我们今天讨论的两个概念:绝对路径和相对路径. 二.函数功能解释 1.__file__ 功能:返回自身文件的相对路径 #atm.py中的代码 print(__file__) #pycharm的执行结果 D:\Python\Python35\p

  • Python 同级目录(兄弟目录)调用方式

    目录 同级目录(兄弟目录)调用 详细解释 开始上代码 import同级目录报错 同级目录(兄弟目录)调用 看书看得好好的,一写代码就出错!!! 这个问题是大家初学Python的时候会遇到的一个很常见的问题,然后我们去搜网上的教程,自己试一试还是都是BUG,常见的就是这两个命令: ModuleNotFoundError: No module named 'XXXXXXX' ImportError: attempted relative import with no known parent pac

  • Python import导入上级目录文件的方法

    目录 1.导入同级模块 2.导入下级模块 3.导入上级模块 4.导入隔壁文件夹下的模块 5.常见错误及import原理 假设有如下目录结构: -- dir0 | file1.py | file2.py | dir3 | file3.py | dir4 | file4.py dir0文件夹下有file1.py.file2.py两个文件和dir3.dir4两个子文件夹,dir3中有file3.py文件,dir4中有file4.py文件. 1.导入同级模块 python导入同级模块(在同一个文件夹中的

  • python文件操作之目录遍历实例分析

    本文实例讲述了python文件操作之目录遍历的方法.分享给大家供大家参考.具体分析如下: Python的os模块,包含了普遍的操作系统功能,这里主要学习与路径相关的函数: os.listdir(dirname):列出dirname下的目录和文件 os.getcwd():获得当前工作目录 os.curdir:返回当前目录('.') os.chdir(dirname):改变工作目录到dirname os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false

  • Python实现扫描指定目录下的子目录及文件的方法

    本文介绍了使用Python来扫描指定目录下的文件,或者匹配指定后缀和前缀的函数.步骤如下: 如果要扫描指定目录下的文件,包括子目录,需要调用scan_files("/export/home/test/") 如果要扫描指定目录下的特定后缀的文件(比如jar包),包括子目录,调用scan_files("/export/home/test/", postfix=".jar") 如果要扫描指定目录下的特定前缀的文件(比如test_xxx.py),包括子目

  • Python备份目录及目录下的全部内容的实现方法

    本来是想写一个东西可以直接调用TortoiseSVN保存当前代码到一个分枝下的. 可惜调用SVN的部分还在研究.就先写了目录拷贝的部分. 如果有喜欢研究Python的童鞋愿意提供想法或者建议的话, 这里先谢谢了. :) 就目录拷贝的部分,思想很简单.读配置文件中的配置信息. 生成一个项目名称加日期时间组成的文件夹名为分枝名称.把当前项目下的全部内容 拷贝到这个目录下. 然后要做的研究就是调用TortoiseSVN命令嵌入这部分代码. 现在看代码: 1. 读取配置文件 配置文件很简单.用的就是tx

  • python实现树形打印目录结构

    本文实例为大家分享了python树形打印目录结构的具体代码,供大家参考,具体内容如下 前言 这两天整理数据文件的时候发现,一层层的点击文件夹查看很繁琐,于是想写一个工具来递归打印出文件目录的树形结构,网上找了一些资料几乎都是使用的os.walk, 调试了以后发现返回的貌似的是一个"生成器",只需要for循环即可,可是这样得到的好像是BFS的结构,并不是我想要的树形结构,最后终于发现了os.listdir这个函数,可是使用它来写一个深度优先搜索,只要递归调用就能解决我的问题. 代码 #!

  • 一篇文章搞定Python操作文件与目录

    前言 文件和目录操作是很常见的功能,这里做个简单的总结,包括注意事项和实际的实现代码,基本日常开发都够用了 目录操作 判断目录或是文件是否存在 os.path.exists(path) 判断是否是文件或是目录 # 如果文件或是目录不存在也会返回False os.path.isfile(path) os.path.isdir(path) 创建/删除目录 os.mkdir(path) os.rmdir(path) 得到当前的目录名称 os.path.split(dir_path)[1] 这个方法既简

  • Python使用reportlab将目录下所有的文本文件打印成pdf的方法

    本文实例讲述了Python使用reportlab将目录下所有的文本文件打印成pdf的方法.分享给大家供大家参考.具体实现方法如下: # -*- coding: utf8 -*- #~ #---------------------------------------------------------------------- import wlab #pip install wlab import reportlab.pdfbase.ttfonts #reportlab.pdfbase.pdfm

  • python实现搜索指定目录下文件及文件内搜索指定关键词的方法

    本文实例讲述了python实现搜索指定目录下文件及文件内搜索指定关键词的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python -O # -*- coding: UTF-8 -*- """ Sucht rekursiv in Dateiinhalten und listet die Fundstellen auf. """ __author__ = "Jens Diemer" __license__

  • Python获取文件所在目录和文件名的方法

    实例如下: import os if __name__ == "__main__": file_path = 'D:/test/test.apk' parent_path = os.path.dirname(file_path) print('parent_path = %s' % parent_path) file_name = os.path.split(file_path)[-1] print('file_name = %s' % file_name) 输出: 以上就是小编为大家

随机推荐