Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python import同级目录报错

Python import同级目录报错

作者头像
py3study
发布于 2020-01-07 03:03:05
发布于 2020-01-07 03:03:05
4.9K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

参考:http://blog.csdn.net/geekleee/article/details/52505233

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

还有一点:

models加一个点,表示同级目录。from .models import classN

import功能实际应用还有很多坑: 比如,不通过模块名字,直接引入模块内的类  我们创建一个包叫ccc,然后下面的init里面什么也没写,都是空的  然后bbb.by里面的内容是:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
def a():
    print (1)
  • 1
  • 2
  • 1
  • 2

如果你要访问这个函数a  首先第一点,一个写法:  from ccc.bbb import a ,注意,他只能通过 包名.模块名来import具体函数  如果你直接用from ccc import a ,是会报警的,报警如下:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
>>> from ccc import a
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ImportError: cannot import name 'a'
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

其实,关键是,如果你要通过from ccc import a,重要的是init的内容  如果我们把init内容写成下图3  from .bbb import a,这里面的 .bbb是什么意思呢?就是在同级目录下面的bbb模块,如果前面是2个点,那就是上级目录的bbb

现在,要讲一个重要概念!!!  当你导入一个包的时候,实际上是导入了这个包的init.py的文件,所以,如果你在init里面写入了其他的import功能,就等于是在初始化的时候帮忙导入了其他东西。  就比如下面的例子,他在导包的时候,就顺便导入了a这个函数!! 

从这个话题引申到其他话题,我在做flask第一节课的时候一直无法理解,为什么from flask import Flask可以成功?  第一个flask是包,第二个Flask是类,但是,实际上这个Flask类是在flask包的目录下app.py里面的。  所以后来我去看了flask包的init.py,原来在里面,他已经帮你导入了Flask类,所以你在导入flask包的时候,就已经可以直接导Flask类了  看到里面的 from .app import Flask, Request, Response  .app就表示了在flask包下,和init同级的app.py 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文教你看懂__init__.py这个被大家轻视的文件
没有__init__.py,Python 不会认为这是一个包,也就无法通过import package_name的方式引入它。
码匠er
2025/05/15
1200
一文教你看懂__init__.py这个被大家轻视的文件
scrapy 调试功能
  在使用 scrapy 来爬取网页的时候,我们难免会使用到调试功能,下面介绍两种调试方法: 1.终端使用 scrapy shell exampleurl exampleurl 为你要爬取网站的 ur
希希里之海
2018/06/07
6910
Python中常见的__init__.py是什么意思?详解Python import的方式和原理
工程模块化是指将具有一定共性的功能封装成一个模块,并对外暴露应用接口,方便其他工程直接调用而无需关注底层实现的思想,工程模块化可以避免工程中各种功能函数相互交杂、定义混乱不堪的情形,有助于提高系统可维护性。
润森
2022/09/22
1.4K0
「源码分享」用flask创建一个完整的工程结构
Flask是一个使用 Python 编写的轻量级 Web 应用框架。与django不同,django创建工程时,会直接构架好工程结构。 而flask工程几乎是自己创建结构。在此介绍 PyCharm 下flask如何创建有一个完整的工程结构。
小小科
2020/06/05
3.5K0
flask的Blueprint,前后台蓝图注册
我使用的是python3.6 文件结构 创建一个shizhan文件夹,根据flask的文件结构,在shizhan里面创建app文件夹,其他如下的结构 ├── app │ ├── __init__.py │ ├── admin │ │ ├── __init__.py │ │ └── views.py │ ├── home │ │ ├── __init__.py │ │ └── views.py │ ├── models.py │ ├── static │
禹都一只猫olei
2018/05/14
2K4
Flask 项目工程拆分
一、蓝本 blueprint 说明 当我们的代码越来越复杂时,将所有的视图函数放在一个文件中很明显时不合适的;如果能够根据功能模块进行划分,存储在不同的文件中,蓝本就是为解决此问题而生的 使用 创建user.py <span class="hljs-keyword">from</span> flask <span class="hljs-keyword">import</span> Blueprint <span class="hljs-comment"># 创建蓝本对象</span> user
星哥玩云
2022/09/14
3300
挑战30天学完Python:Day26 Python Web 服务
Python本身是一种通用的语言,可以用于很多的地方。在本篇中,我们将看到如何在Web开发中使用Python。它有很多的web架构框架。Django和Flask是比较流行。接下来我们就看看如何使用Flask进行web的开发。
MegaQi
2023/10/21
2680
挑战30天学完Python:Day26 Python Web 服务
借助 AI 助手,十分钟帮我搭建了一个简易 ToDo 前后端应用
一开始,我只是想做一个简单点的 ToDo 应用,但又不想随便拼凑几个文件就草草结束。我希望这个小项目能具备良好的结构设计、清晰的前后端分离,同时方便维护和拓展。因此我选择了:Flask + SQLite 构建后端,Vue3 构建前端,并使用 CodeBuddy 作为我的对话式开发助手。
繁依Fanyi
2025/05/15
890
FLask中蓝图(用于分文件)
1 xxx = Blueprint('account', __name__,url_prefix='/xxx')
小小咸鱼YwY
2020/06/19
5180
Python面向对象之模块和包
使用as指定模块的别名 如果模块的名字太长,可以使用as指定模块的名称,以便在代码中的使用;语法如下:
py3study
2020/01/16
6440
Flask 系列之 Blueprint
接触过 DotNet MVC 开发的朋友应该都对 路由 的概念有一定的了解。所谓 路由 就是指我们访问一个网站时,这个网站各个页面访问时对应的 URL 地址。在我们的网站不是很复杂时,我们可以使用最原始的方法来设计路由,但是对待一个大型项目如果我们的路由不能进行统一管理和配置的话,那么对于项目后期来说,是无法维护的。
py3study
2020/01/16
7190
Flask 系列之 Blueprint
python中import星_Python imports 指北
声明:如果你每天写Python,你会发现这篇文章中没有新东西。 这是专为那些像运维人员等偶尔使用Python的人以及那些忘记/误用python import的人写的。 尽管如此,代码是用Python 3.6类型注释编写的,以满足有经验的Python读者。 像往常一样,如果你发现任何错误,请告诉我!
用户7886150
2020/12/31
1.2K0
python_目录结构
目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构。在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论。
py3study
2020/01/15
6580
Python3快速入门(四)——Pyth
Python中使用包管理模块,包通常对应一个目录,必须在目录下创建一个init.py模块,init.py模块的模块名称即为包名,Python才会将目录解析为包。 init.py文件内可以定义初始化包的内容,导入包的内容,限制包内模块的导出。 init.py文件可以为空,也可以是一个模块,其模块名称为包名称。 导入包或包的模块、变量、函数时,init .py文件会被自动执行。
py3study
2020/01/03
1.1K0
flask mysql 数据库增删改查(微信报修小程序源码讲解四)
上一讲,我们学习了 flask 拦截器与session的使用 ,已经清楚了后台用户是否登录的判断及验证 url 合法性的方法 。
热心的程序员
2020/03/26
1.8K0
flask mysql 数据库增删改查(微信报修小程序源码讲解四)
Flask(9)- 蓝图的基本使用
程序中包含 4 个视图函数,根据页面路径,Flask 将请求转发给对应的视图函数,从浏览器发送过来的请求的处理过程如下图所示
小菠萝测试笔记
2021/07/16
9380
Flask(9)- 蓝图的基本使用
Python import同级modul
    看了一段Python的基础视频,正好赶上单位需要做个小工具。索性拿它练练手,刚刚开动就遇到一个新的问题:目录引用。简单的说,就是将不同的功能代码,分到不同的目录文件中,代码中涉及到同级目录调用,问题就出来了“SystemError: Parent module '' not loaded, cannot perform relative import”。
py3study
2020/01/07
8620
Python 自定义模块
1.import 模块名:导入模块中的所有内容(引入多个用逗号分隔) import random,time
用户7886150
2021/01/21
8760
python导入父级别目录
使用python进行程序编写时,经常会使用第三方模块包。这种包我们可以通过python setup install 进行安装后,通过import XXX或from XXX import yyy 进行导入。不过如果是自己遍写的依赖包,又不想安装到python的相应目录,可以放到本目录里进行import进行调用;为了更清晰的理清程序之间的关系,例如我们会把这种包放到lib目录再调用。本篇就针对常见的模块调用方法汇总下。
py3study
2020/01/08
4K0
Python 的 import 是怎么工作的?
Python 的 import 是非常直观的,但即使这样,有时候你会发现,明明包就在那里,我们仍会遇到 ModuleNotFoundError,明明相对路径非常正确,就是报错
somenzz
2022/04/07
8360
Python 的 import 是怎么工作的?
相关推荐
一文教你看懂__init__.py这个被大家轻视的文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验