一、什么是模块?
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
(模块能定义函数,类和变量,模块里也能包含可执行的代码。)
简单的说:模块就是包含函数(对象)的文件。
二、为什么要创建模块?
首先,直接回答这个问题,为什么要创建和使用模块?———为了更好的共享代码,即为了代码的重用。
当然我们可以在代码基中需要的地方通过复制和粘贴代码来共享代码,但是如果我们的代码基中散布着同一个函数的多个副本,(如果我们决定修改函数)这肯定会很难维护。
更好的办法是创建一个模块,其中包含你想共享的所有代码的一个标准副本。
总结一下好处:
1.模块让你能够有逻辑地组织你的 Python 代码段。
2.把相关的代码分配到一个模块里能让你的代码更好用,更易懂,更好维护。
三、怎么使用模块?
3.1如何找到模块?
查看模块时,解释器会在3个主要位置搜索模块:
1.当前工作目录
2.解释器的site-packages位置
3.标准库位置
取决于很多因素,解释器搜索位置2和位置3的顺序可能有变化,但解释器总是首先搜索位置1(你的当前工作目录)。
因为我们的工作目录不总是模块所在的目录,所以我们模块不放在位置1.
又因为标准库包含的模块集合由Python核心开发人员管理,这个模块集合很庞大,设计宗旨是让这些模块得到广泛使用,但是不能修改,所有位置3放不了。
所有我们的自己的模块就只能放在位置2了,当然放在位置2也是最好的选择。
使用 “setuptools” 将模块安装到site-packages
3.2 创建安装文件
新建 mymodules 文件夹,文件夹中包含:function.py, setup.py 和 README.txt
function.py:
自定义的模块中的逻辑代码,文件名在符合规范的前提下可以任意。
setup.py:
必须有这个文件,文件名必须为 setup.py ,它用来描述function.py 文件中的模块。这个文件包含两行代码:第一行从setuptools模块导入setup函数,第二行调用这个setup函数。
setup函数接收大量参数,其中很多是可选的。
比较重要的两个参数:第一个参数制定了发布包;最后一个参数列出了创建发布包时包含的 .py 文件;
# setup.py
from setuptools import setup
setup(
name='function', # ”name“ 参数指定发布包。常见的做法时按模块命名发布包。
version='1.0',
description='The Test Tools',
author='Alex',
author_email='huangtq10@163.com',
url='test.com'
py_modules=['function'], # 这是包含在这个包中的所有 ”.py“ 文件的列表。对于这个例子,只有一个文件: ”function“。
)
README.txt:
除了setup.py, setuptools 机制还要求有 README.txt 文件,可以在这个文件中放入包的文本描述。尽管必须有这个文件,但它的内容是可选的,
就目前测试而言,放了一个创建了一个名为 README.txt 的空文件。
3.3 创建发布文件
在这个阶段,应该有3个文件放在mymodules文件夹中:function.py, setup.py 和 README.txt
3.3.1 在Windows上创建一个发布文件
在包含这3个文件的文件夹打开一个命令行提示窗口,然后输入以下命令:
c:\Users\Alex\mymodules> py -3setup.py sdist
# 执行 ”setup.py“ 中的代码..... 并传递 ”sdist“ 作为参数。
执行命令后,在工作文件夹(mymoudules)中会由 setuptools 创建dist文件夹,之前mymoudules文件中的3个文件合并到了一个发布文件中,这是一个可安装文件,包含了模块的源代码,在这里这个文件的文件名为function-1.0.zip。
可以在dist文件夹中找到新创建的这个ZIP文件。
3.3.2 在类UNIX操作系统上的发布文件
3个文件(setup.py, README.txt 和 function.py)放在了一个文件夹中,在操作系统的命令行上执行这个命令:
mymodules $ python3 setup.py sdist
# 运行python3;执行”setup.py“中的代码..... ;并传递”sdist”作为参数。
执行命令后,这3个文件已经合并到一个原发布文件(就是上面的sdist参数)。这是一个可安装的文件,包含了自定义模块的源代码,在这里这个文件名为function-1.0.tar.gz。
在名为 dist 的文件夹中找到新创建的这个归档文件,dist 文件夹也由 setuptools 创建,位于工作文件夹下面(在这里工作文件夹就是 mymodules)
3.4 用 pip 安装包
Python提供了很多工具来帮助我们完成工作,Python 3.4(及更新版本)包含一个名为pip的工具,pip 表示Package Installer for Python (Python的包安装工具)。
Window操作系统上安装发布文件:
在dist文件夹打开一个命令提示窗口,在这个命令提示窗口中键入下面的这行命令
C:\User\...\dist>py -3 -m pip install function-1.0.zip# 运行Python3 时包括模块 pip,然后让 pip 安装指定的ZIP文件。
类UNIX操作系统上安装发布文件:
在Linux, UNIX或Mac OS X上,从新创建的 dict 文件夹打开一个终端,然后在提示窗口中执行以下命令
.../dist$ sodu python3 -m pip install function-1.0.tar.gz
# 运行Python3时包含模块pip,然后让 pip 安装指定的压缩rar文件;
# 这里我们使用“sudo”命令来确保安装时有适当的权限。
现在function模块已经安装为site-packages的一部分。
向其他Python程序员共享代码有以下两种方式:
1.非正式:
要非正式地共享模块,只需要用你希望的任何方式把它发布给你想发布的任何人(可以使用email、U盘或者从你的个人网站上下载)。
2.正式:
要正式地共享你的模块,可以把发布文件上传到Python集中管理的基于web的软件存储库,名为 PyPI(拼作 “pie-pee-eye”, 这是 Python Package Index的缩写)。
这个网站就是为了让所有Python程序员共享各种第三方Python模块。要了解这个网站上提供了哪些模块,可以访问PyPI网站:http://pypi.python.org/pypi 。
要了解通过 PyPI 上传和共享发布文件的过程,请阅读Python Packaging Authority 维护的一个在线指南,可以在这里找到:https://www.pypa.io (这个指南并没有太多内容)。