python自定义模块和三方模块_python基础知识8——模块1——自定义模块和第三方开源模块...

模块的认识

模块,用一砣代码实现了某个功能的代码集合。

类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。

如:os 是系统相关的模块;file是文件操作相关的模块

模块分为三种:

自定义模块

内置模块

第三方开源模块

自定义模块

1、定义模块

7848f0d9662d71c700475fbfa38b7559.png

2、导入模块

Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:

1 import module

2 from module.xx.xx import xx

3 from module.xx.xx import xx as rename

4 from module.xx.xx import *

导入模块其实就是告诉Python解释器去解释那个py文件

导入一个py文件,解释器解释该py文件

导入一个包,解释器解释该包下的 __init__.py 文件

那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path

1 import sys

2 print sys.path

结果:

1 [‘/home/zh/PycharmProjects/s12/day1‘, ‘/usr/local/lib/python2.7/dist-packages/setuptools-18.1-py2.7.egg‘, ‘/usr/local/lib/python2.7/dist-packages/pip-7.1.0-py2.7.egg‘, ‘/usr/local/lib/python2.7/dist-packages/Django-1.8.16-py2.7.egg‘, ‘/home/zh/PycharmProjects/s12‘, ‘/usr/lib/python2.7‘, ‘/usr/lib/python2.7/plat-x86_64-linux-gnu‘, ‘/usr/lib/python2.7/lib-tk‘, ‘/usr/lib/python2.7/lib-old‘, ‘/usr/lib/python2.7/lib-dynload‘, ‘/usr/local/lib/python2.7/dist-packages‘, ‘/usr/lib/python2.7/dist-packages‘, ‘/usr/lib/python2.7/dist-packages/PILcompat‘, ‘/usr/lib/python2.7/dist-packages/gtk-2.0‘, ‘/usr/lib/python2.7/dist-packages/ubuntu-sso-client‘]

如果我们要添加自己的搜索目录,有两种方法:

一是直接修改sys.path,添加要搜索的目录:

>>> importsys

>>> sys.path.append(‘/Users/zh/my_py_scripts‘)

这种方法是在运行时修改,运行结束后失效。

第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

通过os模块可以获取各种目录,例如:

1 importsys

2 importos

3

4 pre_path = os.path.abspath(‘../‘)

5 sys.path.append(pre_path)

第三方开源模块

1、下载安装

下载安装有两种方式:

方法一:利用源码安装

在 github.com 网站可以下载第三方库的源码(或者其它途径),得到源码之后,在本地安装。

一般情况,得到的码格式大概都是 zip 、 tar.zip、 tar.bz2 格式的压缩包。解压这些包,进入其文件夹,通常会看见一个 setup.py 的文件。如果是 Linux 或者 Mac(我是用 ubuntu,特别推荐哦),就在这里运行 shell,执行命令:

Python setup.py install

如果用的是 windows,需要打开命令行模式,执行上述指令即可。

如此,就能把这个第三库安装到系统里。具体位置,要视操作系统和你当初安装 Python 环境时设置的路径而定。默认条件下,windows 是在 C:\Python2.7\Lib\site-packages,Linux 在 /usr/local/lib/python2.7/dist-packages(这个只是参考,不同发行版会有差别,具体请读者根据自己的操作系统,自己找找),Mac 在 /Library/Python/2.7/site-packages。

有安装就要有卸载,卸载所安装的库非常简单,只需要到相应系统的 site-packages 目录,直接删掉库文件即卸载。

1 下载源码

2 解压源码

3 进入目录

4 编译源码 python setup.py build

5 安装源码 python setup.py install

注:在使用源码安装时,需要使用到gcc编译和python开发环境,所以,需要先执行:

1 yum install gcc

2 yum install python-devel

3 或

4 apt-get python-dev

安装成功后,模块会自动安装到 sys.path 中的某个目录中,如:

1 /usr/lib/python2.7/site-packages/

方法二:pip

用源码安装,不是我推荐的,我推荐的是用第三方库的管理工具安装。有一个网站,是专门用来存储第三方库的,所有在这个网站上的,都能用 pip 或者 easy_install 这种安装工具来安装。这个网站的地址:https://pypi.Python.org/pypi

首先,要安装 pip(Python 官方推荐这个,我当然要顺势了,所以,就只介绍并且后面也只使用这个工具)。如果读者跟我一样,用的是 ubuntu 或者其它某种 Linux,基本不用这个操作,在安装操作系统的时候已经默认把这个东西安装好了(这还不是用 ubuntu 的理由吗?)。如果因为什么原因,没有安装,可以使用如下方法:

Debian andUbuntu:

sudo apt-get install Python-pip

Fedora andCentOS:

sudo yum install python-pip

当然,也可以这里下载文件get-pip.py,然后执行 Python get-pip.py 来安装。这个方法也适用于 windows。

pip 安装好了。如果要安装第三方库,只需要执行 pip install XXXXXX(XXXXXX 代表第三方库的名字)即可。

当第三方库安装完毕,接下来的使用就如同前面标准库一样。

2、导入模块

同自定义模块中导入的方式

3、实例:安装第三方模块 paramiko

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

1 #pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto

2

3 #下载安装 pycrypto

4 wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz5 tar -xvf pycrypto-2.6.1.tar.gz6 cd pycrypto-2.6.1

7 python setup.py build8 python setup.py install9

10 #进入python环境,导入Crypto检查是否安装成功

11

12 #下载安装 paramiko

13 wget http://files.cnblogs.com/files/wupeiqi/paramiko-1.10.1.tar.gz14 tar -xvf paramiko-1.10.1.tar.gz15 cd paramiko-1.10.1

16 python setup.py build17 python setup.py install18

19 #进入python环境,导入paramiko检查是否安装成功

原文:http://www.cnblogs.com/zhenghaonihao/p/6227453.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dhcp只能分配与路由器相同网段么_路由器的桥接详解

网上关于路由器无线桥接的教程很多,让你注意那注意这的,都没有说明白。今天,我来试着缕清它们间的关系!1、主路由器这是我主路由器目前的状态,其中IP地址是我在上级光猫路由的可用ip段192.168.1.2~254里选的一个&#…

逆序对java_逆序对

求逆序对问题用归并排序的时间复杂度比暴力算法更低。假设有一个数组{8,1,2,5,7,4,3,6}首先归并排序第一次对数组进行分割 8 1 2 5 7 4 3 6二次分割 8 1 25 74 3…

python123测验9程序题答案_Django ORM 练习题及答案_python_脚本之家

1.modles中表结构#出版社class Publisher(models.Model):name models.CharField(max_length32)city models.CharField(max_length32)def __str__(self):return "".format(self.id, self.name)#书籍class Book(models.Model):title models.CharField(max_length32)…

java父类shape_为什么该父类无法调用其子类.__ShapeCircle_public_perimeter_getType_shapej__169IT.COM...

子类:public class ShapeCircle extends Shape{protected double r;public ShapeCircle(){setside(0.0);}public ShapeCircle(double r){setside(r);}public void setside(double r){this.rr;}public double perimeter(){return Math.PI*2*r;}public String getType(){return &…

python中双冒号的作用_python中双冒号

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

java电子通讯录毕业设计_(C)JAVA001电子通讯录(带系统托盘)

打开Server Socket,创建一个服务器型套接字和一个普通套接字,服务器型套接字在指定端口为客户端请求的Socket 服务;? 使用ServerSocket类的accept()方法使服务器型套接字处于监听状态并把监听结果返回给普通套接字;? 为该普通套接字创建输入…

python进行数据分析需要安装哪两个库_对Python进行数据分析_关于Package的安装问题...

一、为什么要使用Python进行数据分析?python拥有一个巨大的活跃的科学计算社区,拥有不断改良的库,能够轻松的集成C,C,Fortran代码(Cython项目),可以同时用于研究和原型的构建以及生产系统的构建。二、Python的优势与劣势&#xff…

java orcl自动_Oracle自动生成编号

祝大家新年快乐,有任何问题可与我联系:今天用JAVA向Oracle数据库中插数据时,每次都要去计算ID,觉得好麻烦,于是想到了用数据库自带的ID来做,具体如下:1、首先得创建一序列序列(SEQUENCE)序列是一…

bat批处理执行python_.bat批处理添加Python任务

一、常用命令含义例一、多进程python 任务 -- start 命令echo offstart python C:\Users\ntitled\n\update_restt\test_bat.pypython C:\Users\ntitled\iin\update_restt\test_bat.pypython C:\Users\ntitled\jin\update_restt\test_bat2.pyexit1、它的作用是让执行窗口中不显…

import java.awt.BorderLayout;_Swing-布局管理器之BorderLayout(边界布局)-入门

边界布局管理器(BorderLayout)把容器的的布局分为五个位置:CENTER、EAST、WEST、NORTH、SOUTH。依次对应为:上北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST),中(CENTER),如下图所示。特征:l 可以把组件放在这五个位…

一分钟学会python编程_用Python教你一分钟检验出来!不用群发_编程语言_Python课程_Python教程_课课家...

Python大法已经被网友们玩儿的出神入化了, 最近有网友用Python写了一个脚本, 这个脚本能够自动检测你的微信好友中谁把你删除了? 而且不需要群发消息, 整个过程好友们是完全不知情的。使用范围Mac和Linux经过测试, 确认可用, Windows等待大家的测试反馈, 可以在评论中反馈哦~~…

java 建造者实际中的用法_java中j建造者模式详解和使用方法

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的…

python垃圾回收机制为什么标记能解决循环引用问题_python 关于循环引用以及标记清除的问题...

1 在循环引用的情况下,引用计数就不好事了,这时候就需要用到标记清除循环引用的危害: 会造成内存溢出,因为循环引用计数不可能为零解决方法:标记清除2 关于标记清除的效率问题(低)引用计数引用一次就加1,值减到0以后就应该被回收,那这里就产生了一个问题cpython的垃圾回收机制不…

jsp测试mysql_Jsp登陆与MySQL对接验证

最近在做一个Web项目,账户登陆验证是Web项目中必不可少的环节,所以需要阶段性的记录,帮助自己更好的掌握其中的知识。Jsp登陆涉及到POST方法参数获取,以及MySQL数据库信息的获取。可能因为自己是新手,刚开始写的项目有…

数据归一化处理方法_科研常用的实验数据分析与处理方法

科研常用的实验数据分析与处理方法对于每个科研工作者而言,对实验数据进行处理是在开始论文写作之前十分常见的工作之一。但是,常见的数据分析方法有哪些呢?常用的数据分析方法有:聚类分析、因子分析、相关分析、对应分析、回归分…

java专业术语 ioc_什么叫IOC(编程术语

IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。下面我们以几个例子来说明什么是IoC假设我们要设计一个Girl和一个Boy类,其中Girl有kiss方…

python群控模拟安卓系统_手机群控脚本通用版安装包下载-手机群控脚本通用版apk(云控平板)v1.0.01真机模拟版_新绿资源网...

手机群控脚本通用版apk是一款真机模拟云控平板应用,支持工作室批量挂机搬砖、直播刷人气点赞、云手机试玩项目、吸粉营销、智能引流赚钱等功能,无需多部手机,一个APP控制上万部手机,下载安装吧!应用介绍:云…

java jsonobject.parse_JSON.parseObject的几种用法

import com.alibaba.fastjson.JSONObject;一.result格式:{"success":"true";"returnAddress":"123"}JSONObject jsonObjectJSON.parseObject(result); //转换成objectjsonObject.getString("returnAddress") //获取object中…

信息系统项目管理师_信息系统项目管理师通过率是多少?

答:信息系统项目管理师考试每个地区的通过率都是不一样的,一般全国在10%-20%左右,这个20%的通过率是按参考人数作为统计,就是除去了那些报名了但是没去参加考试的考生,如果算上所有报名考生的通过率数据,那…

类型“unknown”上不存在属性“foreach”_JavaScript红宝书第四版精简解析系列--映射Map数据类型...

Map数据类型顾名思义也就是映射类型,包含一个[[Entries]]私有特性我们可以使用一个二维数组作为初始值const map1 new Map([[1, 1],[2, 2],[3, 3],]); console.log("Map数据类型>", map1);当然也可以使用迭代器进行初始化const map2 new Map({[Symbol.iterator]…