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. c2java Greedy 之任务调度

    近期调试一个javaproject的时候,我遇到不是期望的输出结果时.是这么干的: A1凝视掉抛出的异常: A2加打印对照异常输入和正常输入. A3进一步加打印缩小范围. 事实上仅仅需:B1静下心来细 ...

  2. windows10密钥激活方法

    软件设计开发文档模板(国家标准)v1.1.rar 以上就是今天所分享Win10系统各个版本免费激活的windows密钥,希望win10专业版密钥可以帮助大家. 专业版:W269N-WFGWX-YVC9 ...

  3. MySQLi基于面向对象的编程

    http://blog.csdn.net/koastal/article/details/50650500

  4. Linux安装配置SVN服务器【转】

    1. 安装SVN服务器: 检查是否已安装 # rpm -qa subversion 安装SVN服务器 # yum install httpd httpd-devel subversion mod_da ...

  5. Javascript Array 方法整理

    Javascript Array 方法整理 Javascript 数组相关方法 说明 大多数其它编程语言不允许改变数组大小,越界访问索引会报错,但是 javascript不会报错,不过不建议直接修改a ...

  6. Tomcat7 catalina.out 日志分割

    Tomcat7 catalina.out 日志分割 安装过程如下: 1.下载(最新版本)  cronolog-1.6.2.tar.gz 2.解压缩     # tar zxvf cronolog-1. ...

  7. 【python】python中__name__的使用

    Py1.py #!/usr/bin/env python def test(): print '__name__ = ',__name__ if __name__ == '__main__': tes ...

  8. DataSet和DataTable有用的方法

    每一个DataSet都是一个或多个DataTable 对象的集合(DataTable相当于数据库中的表),这些对象由数据行(DataRow).数据列(DataColumn).字段名(Column Na ...

  9. R语言学习——欧拉计划(3)Largest prime factor 求最大质因数

    The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60085 ...

  10. selenium java-2 chrome driver与对应版本

    chrome driver下载地址:https://npm.taobao.org/mirrors/chromedriver driver与chrome的对应关系: 1.进入最新的driver,查看no ...