类似于C语言的包含头文件去引用其他文件的函数,python也有类似的机制,常用的引入方法有以下

import 模块名  #模块名就是py文件名
#使用这种方法以后调用函数的时候要使用模块名.函数名()这种形式 from 模块名 import 函数名
#使用这种方法以后调用函数的时候要可以直接使用函数名()这种形式

这里要注意的是

当模块和程序入口为同级文件时候,可以用以上方法

如果不为同级文件,需要from 包名(文件夹名) import 模块名(文件名)

举个多重包嵌套的时候如何引入模块

from package1.package2.package3 import module1
#使用这种方法以后调用函数的时候要使用模块名.函数名()这种形式 from package1.package2.package3.module1 import func
#使用这种方法以后调用函数的时候要可以直接使用函数名()这种形式

针对于常见的目录结构导入模块方法


上图是我们比较常用的文件结构有以下特点

主函数去寻找模块的时候有两种方式:1.找自己同级的py文件 2.找系统环境变量路径下的py文件

这个时候我们得如何做呢?

首先铺垫几个基本知识

1.__file__变量,这个变量记录了你当前的文件,使用os.path.os.path.abspath(__file__)得到文件的绝对路径

#打印当前文件的路径
print(os.path.os.path.abspath(__file__))
#打印结果为E:/winshare/python/package/module.py

2.os模块中的一个取文件夹函数os.path.dirname(),传参为一个文件绝对路径。

#获取当前文件的文件夹路径
print(os.path.dirname("E:/winshare/python/package/module.py"))
#打印结果为E:/winshare/python/package

3.将路径添加到环境变量中可以让python找到模块,sys.path.append(路径名)

利用上述3个 知识我们就可以进行模块的导入了。

import os,sys

print(__file__)
#当前路径是E:/winshare/python/bin/test.py BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_DIR)
#获取到基础路径E:/winshare/python sys.path.append(BASE_DIR)
#将基础路径放到系统变量中 from package import module
#引入包

python的模块与包的导入的更多相关文章

  1. python之模块、包的导入过程和开发规范

    摘要:导入模块.导入包.编程规范 以My_module为例,My_module的代码如下: __all__ = ['name','read'] print('in mymodule') name = ...

  2. Python中模块与包的导入(朴实易懂版的总结)

    这几天,被python包与模块的导入问题,折磨的不行,以前想的很简单,其实不然,经查资料研究,特总结如下: 基本注意点 模块:一般指一个py文件:包:含有许多py文件的文件夹,含有 或不含有(Pyth ...

  3. 一文搞懂 Python 的模块和包,在实战中的最佳实践

    最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...

  4. Python之模块和包导入

    Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...

  5. python 深入模块和包

    模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...

  6. python模块与包的导入

    1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...

  7. python模块及包的导入

    一.模块 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc".&q ...

  8. (Python )模块、包

    本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...

  9. Python 基金会 —— 模块和包简介

    一.模块(Module) 1.模块的作用      在交互模式下输出的变量和函数定义,一旦终端重新启动后,这些定义就都不存在了,为了持久保存这些变量.函数等的定义,Python中引入了模块(Modul ...

随机推荐

  1. Python系列-python函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...

  2. java中的引用类型的对象存放在哪里

    根据上下文来确定.比如void func(){    Object obj = new Object();//这个obj在函数的栈里.}class Test{   private Object obj ...

  3. Linux探索之路1---CentOS入坑笔记整理

    前言 上次跟运维去行方安装行内环境,发现linux命令还是不是很熟练.特别是用户权限分配以及vi下的快捷操作.于是决定在本地安装一个CentOS虚拟机,后面有时间就每天学习一点Linux常用命令. 作 ...

  4. MySql中的varchar长度究竟是字节还是字符

    今天在设计表的时候,遇到个小问题,由于不知道未来将要存储的数据有多长(数据是通过第三方http接口提供的,根据sample显示,数据大概是如下:) 也就是6个字符. 我在设计表的时候,有点犹豫,本来准 ...

  5. C++的三大特性:封装、继承和多态性的详解

    封装 所谓封装就是将某些东西包装盒隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问.封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是通过外部接口以及特定的访问权限来使 ...

  6. Java 线程池原理分析

    1.简介 线程池可以简单看做是一组线程的集合,通过使用线程池,我们可以方便的复用线程,避免了频繁创建和销毁线程所带来的开销.在应用上,线程池可应用在后端相关服务中.比如 Web 服务器,数据库服务器等 ...

  7. ubuntu12.04更新到14.04,win7误删BCD引导项,导致两个系统都无法进入

    解决办法: 制作老毛桃U盘启动盘,使用BCD编辑软件,对C/boot下的BCD文件进行编辑,添加win7引导向. 开机进入win7后,使用easyBCD添加ubuntu14.04启动项,选择grub2 ...

  8. [IOI 2011]Race

    Description 给一棵树,每条边有非负权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, 1 <= K <= 1000000 Input 第一行 两个 ...

  9. 【BZOJ 2395】Time is money

    题目大意有n个城市(编号从0..n-1),m条公路(双向的),从中选择n-1条边,使得任意的两个城市能够连通,一条边需要的c的费用和t的时间,定义一个方案的权值v=n-1条边的费用和*n-1条边的时间 ...

  10. hihoCoder 1596 : Beautiful Sequence

    Description Consider a positive integer sequence a[1], ..., a[n] (n ≥ 3). If for every 2 ≤ i ≤ n-1, ...