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就可以了。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
在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) 输出: 以上就是小编为大家
随机推荐
- 用prototype实现的简单小巧的多级联动菜单
- Go语言到底有没有引用传参(对比 C++ )
- jQuery实现弹出带遮罩层的居中浮动窗口效果
- JS 面向对象的5钟写法
- 正则表达式高级技巧及实例详解 笨活儿
- JNDI,JTA和JMS简介
- js验证电话号码与手机支持+86的正则表达式
- 浅谈Python数据类型判断及列表脚本操作
- 浅谈InnoDB隔离模式的使用对MySQL性能造成的影响
- PHP的AES加密算法完整实例
- Lua进阶教程之闭包函数、元表实例介绍
- VBS教程:函数-Atn 函数
- Vagrant基本命令使用详解
- sqlserver通用的删除服务器上的所有相同后缀的临时表
- Windows平台下MySQL常用操作与命令
- H5实现仿flash效果的实现代码
- Easyui Datagrid自定义按钮列(最后面的操作列)
- javascript中通过arguments参数伪装方法重载
- 通过JavaScript控制字体大小的代码
- linux下查看yum/rpm/dpkg某软件是否已安装的方法