python在不同层级目录import模块的方法

注意,在python3里,即使目录下没__int__.py文件也能创建成功,猜应该是解释器优化所致,但创建包还是要记得加上这个文件 吧。

1、模块的分类

(1)内置模块(又称标准库)执行help(modules)查看所以python自带模块列表

(2)第三方开源模块,可以通过pip install模块名联网安装 django

(3)自定模块

2、什么是模块

在计算机程序开发过程中,随着代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护,为了提高代码的可维护性。

我们把很多函数分组,分别放在不同的文件里,这样每个文件里面的代码就相对较少。

在python中,一个.py文件就称为一个模块

3、使用模块的好处

(1)提高代码的可维护性

(2)避免函数名和变量名冲突

(2)模块可以重用,避免使用重复代码

4、模块的调用

import module (同级引用)

from module import xxx(引用module 儿子辈文件)

from module.xx.xx import (相当于在引用module的孙子辈文件)

当你要导入的文件在和你的当前文件在同一个目录时,你直接导入这个文件名就好了。

当你要导入的文件或者目录不和你的当前文件同目录时,你需要跳到这个你要导入文件的父级目录,然后一级一级的用点号连接走过的目录或者文件,

然后就可以了 至于要怎么跳到这个这个父级目录。

比较通用的就是,将父级目录加入系统路径,然后用点号一级一级的寻找,直到到达你要导入的模块。

好比user_conroller.py 要引用setting.py文件里面的函数
user_conroller.py属于atm孙子辈文件
atm与conf同级 在user_conroller.py里面设置环境变量
#添加环境变量
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))(atm和conf的父级绝对路径)
sys.path.append(BASE_DIR) os.path.abspath(__file__)表示当前文件的绝对路径
os.path.dirname(os.path.abspath(__file__))表示user_conroller.py父级目录的路径 要引用conf下文件,必须回到conf的父级路径,所以
设置环境变量:
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))(atm和conf的父级绝对路径目录) 引用:
from conf import settings #----------------------------------------------------
如果在settings.py文件里面引用 user_conroller.py的函数 设置环境变量
BASE_DIR =os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR) form atm.core import user_conroller
绝对路径:os.path.abspath("文件名"):
显示的是一个文件的绝对路劲
print(os.path.abspath("settings.py"))
2、相对路径
os.path.dirname("文件名"):
显示的是一个文件的相对路径
 

5、开源模块的安装和使用

开源模块安装、使用

https://pypi.python.org/pypi 是python的开源模块库,截止2017年9.30日 ,已经收录了118170个来自全世界python开发者贡献的模块,几乎涵盖了你想用python做的任何事情。

事实上每个python开发者,只要注册一个账号就可以往这个平台上传你自己的模块,这样全世界的开发者都可以容易的下载并使用你的模块。

那如何从这个平台上下载代码呢?

1.直接在上面这个页面上点download,下载后,解压并进入目录,执行以下命令完成安装

编译源码    python setup.py build
安装源码 python setup.py install

直接通过pip安装 pip3 install paramiko #paramiko 是模块名

pip命令会自动下载模块包并完成安装。

软件一般会被自动安装你python安装目录的这个子目录里

/your_python_install_path/3.6/lib/python3.6/site-packages

pip命令默认会连接在国外的python官方服务器下载,速度比较慢,你还可以使用国内的豆瓣源,数据会定期同步国外官网,速度快好多

sudo pip install -i http://pypi.douban.com/simple/ alex_sayhi --trusted-host pypi.douban.com   #alex_say

7 python 模块间相互导入的更多相关文章

  1. Python 模块定义、导入、优化详解

    一.定义 模块:用来从逻辑上组织 python 代码(变量,函数,类, 逻辑:实现一个功能),本质就是 .py 结尾的 python文件(例如:test.py文件,对应的模块名:test) 包:用来从 ...

  2. python模块--如何相互调用自己写的模块

    一.模块相互调用同级目录调用时的两种方法 import module print(module.add(3,8)) from module import add print(add(2,4)) 同级目 ...

  3. python 模块间的引入

    转载来自: https://www.cnblogs.com/whitemouseV2-0/p/9925344.html https://www.cnblogs.com/whitemouseV2-0/p ...

  4. python 模块之间相互引用

    模块层级关系: ----: |->AA.py |->BB.py |->CC.py AA.py from BB import BB class AA: def sub(self, x) ...

  5. (三)运用Python模块和包

    1 引言 为了能够在Python项目中高效地运用Python模块和包,我们需要进一步地来了解它们是如何在Python项目中进行定义.使用和工作的. 2 Python模块和包 Python模块和包的基本 ...

  6. python 包以及循环导入

    包的认识 包通过文件夹来管理一系列功能相近的模块 包:一系列模块的集合体重点:包中一定有一个专门用来管理包中所有模块的文件包名:存放一系列模块的文件夹名字包名(包对象)存放的是管理模块的那个文件的地址 ...

  7. ios业务模块间互相跳转的解耦方案

    *此文章需有一点runtime的知识,假设你不了解runtime,<高速理解Runtime of Objective-C>: http://mp.weixin.qq.com/s?__biz ...

  8. python模块及包的导入

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

  9. 6.python模块(导入,内置,自定义,开源)

    一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过 ...

随机推荐

  1. Composer 技巧(以 FastAdmin 项目为基础)(2018-12-25 更新)

    Composer 技巧(以 FastAdmin 项目为基础) 查看 FastAdmin 所有的已安装的 php 组件,如果不加 i 就是查看 composer.json 里的组件. composer ...

  2. FastAdmin 系统配置中添加选项卡

    群里有小伙伴问怎么在系统配置中添加选卡,之前试过. 流程如下 刷新页面,然后就有了.

  3. JUC锁之 框架

    根据锁的添加到Java中的时间,Java中的锁,可以分为"同步锁"和"JUC包中的锁". 同步锁 即通过synchronized关键字来进行同步,实现对竞争资源 ...

  4. Django模板语言(常用语法规则)

    Django模板语言 The Django template language 模板中常用的语法规则 {最新版本的Django语法可能有改变,不支持的操作可能支持了.[HTML教程 - 基本元素/标签 ...

  5. Linux下C/C++代码调用PHP代码(转)

    Linux下C/C++代码可以通过popen系统函数调用PHP代码并通过fgets函数获取PHP代码echo输出的字符串. //main.c char str[1024] = {0}; char *  ...

  6. Django QuerySet和中介模型

    笔记如下 一.QuerySet QuerySet是什么? 类似列表里边存着对象 只和ORM有关系 from app01.models import Book def qDemo(request): b ...

  7. 切图js

    首先引用一段关于拖动,缩放,剪切的基础代码 /* * 作者:http://cloudgamer.cnblogs.com/ * * 改进与增强 * 作者:http://yoker.sc0826.com/ ...

  8. bzoj1034 泡泡堂

    Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对阵 ...

  9. DOM操作之属性和样式操作

    在DOM操作,除了前面的节点操作以外,常常被用到的操作还有属性操作和节点操作,下面,主要来总结一下jQuery中的属性操作方法和样式操作方法. 在开始操作前,我们需要先在html中添加如下代码,后面所 ...

  10. 2018-2019 20165226 Exp5 MSF基础应用

    2018-2019 20165226 Exp5 MSF基础应用 目录 一.实验内容说明及基础问题回答 二.实验过程 Task1 主动攻击实践 ms08_067 ms17_010 Task2 针对浏览器 ...