先插入模块/包是怎么找的

先找当前的包找有没有,没有去安装目录的内置函数中,再没有看看你设置的系统环境变量有没有

一般情况,代码添加的环境变量只存在当前窗口,关闭就没了-

正题python中模块是包含变量、函数等的文件;只要是你想引用的文件都叫模块

包是存放多个文件/模块的文件夹,可以统一组织和管理多个python模块

包结构中包含一个特殊的文件[__init__.py]。

两者的区别:包是一个文件夹,可以存放多个文件/模块,

模块是一个文件。

模块可以放在包,也可以放在目录,而放在包的作用是(见上见下)

在引入Package中的模块时from xx import xx和import xx,而使用后者时还要确保__init__.py文件中个导入了模块;

在引入Directory中内容时,只可以引入该目录的子目录中的内容,也可以在目录中添加__init__.py使之可以像包一样引用

而使用import xx(特别注意,这里的xx是包名!)时还要确保__init__.py文件中个导入了模块

这个再详细说明

做为包,你可以选择import和from 前者引用全部,后者可以选择包中的子模块,而当引用全部却没有在__init__.py写子模块的位置就会报错,例如:import pay #引用pay这个包

pay.alipay.tools.pay2()# 再使用pay包当前目录的alipay文件夹里的tools.py里的pay2方法

会报错

module 'pay' has no attribute 'alipay'

报错是因为导入包,实际是导入包的__init__.py

那为什么 from pay.alipay.tools import pay2 可以??

A:因为这种方式已经明确了路径了啊,或者见下面对于单文件和目录的说法吧~

直接import pay 对的就是pay下的__init__.py 这个很关键,而当你使用包里的子模块或者方法的时候必须在__init__.py写明位置,不然读取不了

如何修复?

一般下__init__.py都是空的,要去写

pay下的__init__.py 加 from . import alipay

同样在alipay文件下的__init__.py 填from .tools import pay2, get_status //注意这里import 可以逗号形式写

. 是什么呢?可以说.就是当前目录,也就是前面我非要在前面别扭地打出当前目录

说到这里,可能又发现-

那为什么 from pay.alipay.tools import pay 这个pay前面没有. 因为这种直接明确地址的是在项目的根目录开始找起,不需要添加,添加反而出错

这里要区分开,就是在__init__.py引用要加当前目录

from . import alipay 意思是 pay下作为当前目录,找pay里的alipay

好,说到这里你可以有点糊涂了,没事,先冷静下

引用单个文件的时候,写的import就得麻烦了

1.from的写法

假设a文件夹里的b文件夹有c.py 我们引用的时候得这样写

from a.b import c 这意思是占用的父文件夹a当前目录(.)下的b,b文件夹的c.py

2.import c,至于怎么找,看最上面的插入吧

这里要跟包区分,因为包的import是文件夹的/包的名称,而这里就是c.py,因此直接指向c.py,而包名指向__init__.py

包可以选择两种方法,from更能选择包里的子包。

这里继续说到上面的遗留问题

from pay.alipay.tools import pay2

对于上面来说,没有加.是因为从根目录上找,pay却是a文件夹的,那为什么这里又把a.b写上,而不写b呢,

1.这是单个文件,或者说是目录的文件,不是包

2.在引入Directory中内容时,只可以引入该目录的子目录中的内容,在上面谈到了。因为如果直接写b,它会认为是一个包,但是却没有__init__.py,所以说这里得b弄成子目录,否则不能引用b文件夹的c.py,也就说引用模块,from必须的是子目录

,写出子目录,即使是包,也得指向from pay.tools pay的tools.py 没有直接指向pay。或者说只写一个,先认为你是一个模块,而不是目录。也就是最后一个tool和第一个必须是模块,而不是目录……

只写一个目录,还不如直接当包直接import

其实,还有个最最不会出错的方法就是……

写好包,先不引用,写好部分代码,让pycharm给你自动修复引用@(真棒)

python导入自己写的包_python的模块,包和目录的区别和自定义包的注意点相关推荐

  1. python导入自己写的函数_Python导入模块的几种方法

    Python 模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代 ...

  2. python 导入自己写的类_python中自己的类不能被导入

    我自己编写了一个类 class Settings(): def __init__(self): self.screen_width=1200 self.screen_height=800 self.b ...

  3. python 引入同一路径的类_Python入门 模块导入 import ...\from... import...

    代码越来越多的时候,我们将代码写到一个.py 文件里,随着代码的增加,代码的维护越来越困难.如果将代码按照不同的功能拆分放到不同的.py文件中,每个.py文件就是一个模块. 不同模块中的变量名可以相同 ...

  4. python导入自己写的模块_大话python模块导入

    对于完成一些简单任务的程序我们编写一个源文件是可以的,但对于稍微复杂点的程序或大型程序时,我们往往需要把这个复杂任务按照一定的规则拆分成多个python文件来实现,最后再把多个文件组合在一起就可以了, ...

  5. python导入pandas具体步骤方法_python导入pandas具体步骤方法

    Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持. Pandas的名称来自于面板数据(panel data)和python数据分析(data anal ...

  6. python字符串函数的find方法_Python string模块 字符串函数方法操作教程

    我们在Python编程过程中,经常会处理一些字符串的相关操作,例如:查找.替换.分隔.截取以及英文的大小写转换等,这个时候Python程序员首选的一定是 string模块 . 一.string模块简单 ...

  7. python导入自己写的模块_Python:包、模块和导入

    南京著名风景区--牛首山 预计阅读时间--5分钟 Python的好处在于,你不需要懂很多概念,你就有机会投入工作,同样,问题也有机会随时发生. 包.模块 foo --bar.py --sim.py - ...

  8. python引入自己写的文件_python引入自己写的Py文件

    原博文 2020-04-23 23:40 − 1.新建一个test_a.py文件 def print_sum(a,b): if(type(a)==int or type(b) == int): pri ...

  9. python打开文件写文件乱码_Python读写文件乱码问题

    对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...

  10. python导入pandas具体步骤方法_python导入pandas具体步骤方法-

    Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持. Pandas的名称来自于面板数据(panel data)和Python数据分析(data anal ...

最新文章

  1. FT报源检测到目标无法恢复解决过程
  2. 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】
  3. PlantUML权威教程-时序图
  4. TensorFlow 笔记6--迁移学习
  5. boost::format模块演示添加到 printf 语法的功能
  6. EFCore查缺补漏(一):依赖注入
  7. P2053 SCOI2007 修车,费用流好题
  8. 作业二:个人博客作业内容:需求分析
  9. Visual Studio Code C++配置文件
  10. 消息队列---消息模型及使用场景
  11. GY的实验室 - Phalcon+Nginx+PHP-FPM环境搭建
  12. hp服务器增加raid卡,惠普ProLiant服务器Raid卡配置过程详解
  13. ssd内部是多个flash一起操作_广告设计中Flash图形动画的应用
  14. 处理机调度的概念、层次
  15. Nginx负载均衡与反向代理——基础功能
  16. 三极管饱和状态的判断
  17. FFmpeg-2、编解码及视频像素格式尺寸转换和音频重采样
  18. WINCE ROM 定制大教程
  19. 水果忍者(数学 叉积)
  20. 《通信技术导论(原书第5版)》——2.8 增值电话应用系统

热门文章

  1. WebService接口实际场景应用(一)
  2. selenium+python模拟键盘鼠标操作,python3.6安装pyUserInput
  3. 简易python爬虫 - 爬取站长论坛信息
  4. IPVS和Nginx两种WRR负载均衡算法详解
  5. java中遍历Map几种方法
  6. python学习:猜数字游戏
  7. Scrapy学习篇(十)之下载器中间件(Downloader Middleware)
  8. ElasticSearch 2 (18) - 深入搜索系列之控制相关度
  9. Sequence operation3397
  10. 有朋自远方来——阿里软件专家作客武汉博文