python模块如何查看

对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块);对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是.py文件可以认为是一个模块。在“模块”之上有“包”,主要是为了方便组织和管理模块。比如C#中编译后的.dll文件(但常常不表述为包Package,而是库Library),Java将.class打包后的.jar文件,PHP的.phar文件(模仿Java包),在Python中一个特殊定义的文件夹是一个包,可以打包为egg文件。但对于解释型语言“包”并没有编译成低级语言而后打包的意思,只是更加方便模块化和管理模块间的依赖。每种编程语言对于模块和包管理都有一定的约定,不了解这些约定,那会给学习这种语言的带来障碍。下面我想来梳理一下Python的这些约定。

一、Python查找模块的路径

运行Python应用或引用Python模块,Python解释器要有一个查找的过程。可以通过设置一个环境变量PYTHONPATH为Python增加一个搜索路径,以方便查找到相关Python模块(不同的操作系统环境变量的设置稍有不同,默认以下都是WIndows环境),这与众多应用程序需要设置一个系统环境变量的道理是一样的。在命令行中可以通过以下命令设置:

C:\Users\Administrator>set PYTHONPATH=E:/Project/Python/ModuleAndPackage/

进入Python环境后可以,通过Python的sys.path属性获得当前搜索路径的配置,可以看到之前我们设置的路径已经在当前搜索路径中了。

C:\Users\Administrator>python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'E:\\Project\\Python\\ModuleAndPackage', 'C:\\Windows\\system32\\python27.zip','C:\\Python\\DLLs','C:\\Python\\
lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages']

>>>

也可以通过sys模块的append方法在Python环境中增加搜索路径。

>>> sys.path.append("E:\\Project\\Python\\ModuleAndPackage2")
>>> sys.path
['', 'E:\\Project\\Python\\ModuleAndPackage', 'C:\\Windows\\system32\\python27.zip','C:\\Python\\DLLs','C:\\Python\\
lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages','E:\\
Project\\Python\\ModuleAndPackage2']
>>>

二、Python中的模块和包

前面已经提到每个.py文件都是可以认为是一个Python模块,.py文件中可以包含类、方法、变量和常量(Python还没有严格意义上的常量,只是约定大写的变量作为常量),文件内也可以直接写所有的逻辑语句并在加载时从上之下直接执行,这与其他解释型语言是类似的。例如我们选择在文件夹ModuleAndPackage中创建一个文本文件person.py文件即创建了一个简单的Python模块,其内容如下:

# -*- coding: utf-8 -*-
ID = 1
name = "This person"
print name
def say(something):
  print name,'says', something

那么接下来我们就可以在Python环境中执行person.py。我们可以直接像执行一个批处理文件那样执行person.py,在cmd命令行输入:

Python E:/Project/Python/ModuleAndPackage/person.py

本质上任何一个Python应用的入口模块都是这样被执行的(像C#和Java中的main函数),但是引用一个模块,就要建立运行它的上下文环境。我们先设置一个环境变量PYTHONPATH,以便Python解释器找到person.py模块,然后import person模块,即可访问其中的方法或变量。

C:\Users\Administrator>python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (
Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import person
This person
>>> person.say("hello")
This person says hello
>>> print person.name
This person
>>>

Python需要去某些固定的路径下去查找Python模块,上面我们设置在ModuleAndPackage中查找。但是这些路径下也是有目录层次的,Python是如何查找子目录中的模块呢?特别是引用第三方包时,我们也需要知道一定的层次关系。实际上,Python通过目录和文件构建包结构,并且包是层层嵌套的,和目录层层嵌套是一样的,这样就构成了包内的访问路径(或者命名空间,也可以说Python应用的命名空间与其目录和文件结构是对应了,似乎缺少了一些灵活,但也更简单)。例如我们在ModuleAndPackage文件夹下,创建一个文件夹animal,里面创建一个文本文件pet.py,其内容如下:

# -*- coding: utf-8 -*-
ID = 2
name = "This pet"
print name
def run(somewhere):
  print name,'runs', somewhere

那么如何引用pet.py这个模块呢?按照Python的约定,需要在animal文件夹中创建名为__init__.py的空文本文件,以标识animal文件夹是一个包。倘若animal文件夹内还有文件夹作为包,也必须包含__init__.py文件。这样就层层标识了访问的路径。

>>> import animal.pet
This pet
>>> print animal.pet.name
This pet
>>> animal.pet.run("everywhere")
This pet runs everywhere
>>>

或者使用from关键字直接导入模块内的属性或方法:

>>> from animal.pet import name,run
>>> print name
This pet
>>> run("everywhere")
This pet runs everywhere
>>>

知识点扩展:

使用模块有什么好处?

当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中。但是也要注意,尽量不要与内置函数名字冲突。

如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

到此这篇关于python模块如何查看的文章就介绍到这了,更多相关python的模块在哪内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python3 requests模块如何模仿浏览器及代理

    requests是使用Apache2 licensed 许可证的HTTP库. 用python编写. 比urllib2模块更简洁. Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码. 在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作. 代码如下 import requests def xia

  • Python smtp邮件发送模块用法教程

    在Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装,让我们在Django环境中可以更方便更灵活的发送邮件. 所有的功能都在django.core.mail中. 一.快速上手 两行就可以搞定一封邮件: from django.core.mail import send_mail send_mail( 'Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'],

  • Python xlrd模块导入过程及常用操作

    简介 读取Excle文档,支持xls,xlsx格式 安装:pip3 install xlrd 导入:import xlrd xlrd 模块方法 读取Excel file = 'route_info.xls' # 读取Excel信息,生成对象 read_book = xlrd.open_workbook(file) 获取sheet[表]相关方法,返回xlrd.sheet.Sheet()对象 sheet = read_book.sheets() # 获取全部sheet列表 print(sheet)

  • Python中zipfile压缩文件模块的基本使用教程

    zipfile Python 中 zipfile 模块提供了对 zip 压缩文件的一系列操作. f=zipfile.ZipFile("test.zip",mode="") //解压是 r , 压缩是 w 追加压缩是 a mode的几种: 解压:r 压缩:w 追加压缩:a 压缩一个文件 创建一个压缩文件 test.zip(如果test.zip文件不存在) ,然后将 test.txt 文件加入到压缩文件 test.zip 中,如果原来的压缩文件中有内容,会清除原有的内容

  • Python xlwt模块使用代码实例

    简介 写入Excle文档 安装:pip3 install xlwt 导入:import xlwt xlrd 模块方法 写入案例 import xlwt # 创建对象,设置编码 workbook = xlwt.Workbook(encoding='utf-8') # 新建sheet表 worksheet = workbook.add_sheet(sheet_name, cell_overwrite_ok=True) # 在对应行,列写入值 worksheet.write(0,0, label =

  • python模块如何查看

    对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块):对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是.py文件可以认为是一个模块.在"模块"之上有"包",主要是为了方便组织和管理模块.比如C#中编译后的.dll文件(但常常不表述为包Package,而是库Library),Java将.class打包后的.jar文件,PHP的.phar文件(模仿Java

  • python模块和函数帮助文档快速查看方法示例

    目录 引言 通用帮助函数help() 模块帮助查询 查看.py结尾的普通模块 查看内建模块 查询函数信息 查看模块下所有函数 查看模块下特定函数信息 查看函数信息的另一种方法 引言 python的一个优势是有着大量自带和在线的模块(module)资源,可以提供丰富的功能,在使用这些模块的时候,如果每次都去网站找在线文档会过于耗费时间,结果也不一定准确.因此这里介绍下python自带的查看帮助功能,可以在编程时不中断地迅速找到所需模块和函数的使用方法 通用帮助函数help() 在python命令行

  • Python编程实现双击更新所有已安装python模块的方法

    本文实例讲述了Python编程实现双击更新所有已安装python模块的方法.分享给大家供大家参考,具体如下: 首先声明我是一个升级控.几乎每天会查看一下手机.电脑是否有新的应用需要更新. 同样,我的python模块也是这样.百度了一下,发现目前还没有人将更新所有模块做成一件命令,但是查到了指引,主要就是两个命令. pip list --outdated pip install -U xxxx 当然,如果你只是安装了几个python模块,重复执行几次命令也是可以的,也不会太烦,也不会浪费时间. 有

  • Python模块结构与布局操作方法实例分析

    本文实例讲述了Python模块结构与布局操作方法.分享给大家供大家参考,具体如下: #coding=utf8 #起始行 #!/usr/bin/env python #模块文档 ''''' 合理的Module布局: (1) 起始行(Unix) (2) 模块文档 (3) 模块导入 (4) 变量定义 (5) 类定义 (6) 函数定义 (7) 主程序 ----------------------------- (1) 起始行(Unix) 通常只有在类Unix环境下才使用起始行,有起始行可以输入脚本名来执

  • Python模块包中__init__.py文件功能分析

    本文实例讲述了Python模块包中__init__.py文件功能.分享给大家供大家参考,具体如下: 用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的意义,偶然看到对它的介绍吓一大跳,这个文件太重要了 模块包: 包通常总是一个目录,目录下为首的一个文件便是 __init__.py.然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了. 差不多就像这样吧: Package1/ __init__.py   

  • Python模块搜索路径代码详解

    简述 由于某些原因,在使用 import 时,Python 找不到相应的模块.这时,解释器就会发牢骚 - ImportError. 那么,Python 如何知道在哪里搜索模块的路径呢? 模块搜索路径 当导入名为 hello 的模块时,解释器首先搜索具有该名称的内置模块.如果没有找到,将在变量 sys.path 给出的目录列表中搜索名为 hello.py 的文件. sys.path 从这些位置初始化: 包含输入脚本的目录(或当前目录,当没有指定文件时) PYTHONPATH(目录名列表,与 she

  • Python模块、包(Package)概念与用法分析

    本文实例讲述了Python模块.包(Package)概念与用法.分享给大家供大家参考,具体如下: Python中"模块"的概念 在开发中,我们会有很多函数,我们可以把这些函数都放到一个文件. 比如function.py中: #定义函数 def show(): print("jack") #定义变量 name = "tom" 在其他地方要使用其中的函数怎么办呢? 第一步:需要先引入 import funtions 第二步:通过文件名.函数名/变量名

  • python模块导入的细节详解

    python模块导入细节 本文主要介绍了关于python模块导入的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码文件按照功能可以分为两种类型: 用于执行的可执行程序文件 不用与执行,仅用于被其它python源码文件导入的模块文件 例如文件a.py和b.py在同一目录下,它们的内容分别是: # b.py x="var x in m

  • Python模块的定义,模块的导入,__name__用法实例分析

    本文实例讲述了Python模块的定义,模块的导入,__name__用法.分享给大家供大家参考,具体如下: 相关内容: 什么是模块 模块的导入 模块的导入 自模块的导入 同级目录导入 不同级目录导入 目录内导入目录外 目录外导入目录内 __name__ 什么是模块: 在Python中,模块就是一个个方法和类的仓库,如果我们想要使用某个模块中的某个方法或类,那么我们就需要导入对应的模板. [python有内置方法.类,所以有些方法我们并不需要导入模块] 模块的使用:模块.函数 ,     模块.类

  • Python模块的制作方法实例分析

    本文实例讲述了Python模块的制作方法.分享给大家供大家参考,具体如下: 1 目的 利用setup.py将框架安装到python环境中,作为第三方模块来调用, 2 第一步:完成setup.py的编写 以下代码相当于一个模板,只用更改name字段出,改为对应的需要安装的模块名称就可以,比如这里是:py_plus 将setup.py文件放到py_plus的同级目录下 from os.path import dirname, join # from pip.req import parse_requ

随机推荐