为代码组命名,就得到函数
将多个函数放在一个文件中,就得到模块
创建模块很简单:将包含许多函数的代码保存为.py
文件,就得到一个模块
def search4vowels(word:str='Hello') -> set:
"""Return any vowels found in a word"""
vowels = set('aeiou')
return vowels.intersection(set(word))
def search4letters(word:str='Hello',letters:str='aeiou') -> set:
"""Return a set of 'letters' found in a 'word'"""
return set(letters).intersection(set(word))
将代码保存为vsearch.py
,就得到一个模块
在使用import
语句导入模块时,解释器会在3个主要位置搜索模块:
导入模块时,必须保证模块位于以上三个位置之一,否则解释器找不到模块,抛出
ImportError
错误
当前工作目录并不固定,而标准库是不能修改的
因此,应该将第三方模块安装到site- packages位置
setuptools
将模块安装到site-packages在Python 3.4及以上操作
setup.py
和 README.txt
按这3个步骤,就能为模块创建一个发布包。
这个包是一个压缩文件(其中包含在 site-packages中安装模块所需的全部内容)
这里需要创建两个描述文件:setup.py
和 README.txt
(必须这样命名)
且它们应该与模块vsearch.py
放在同一个文件夹下
setup.py的文件内容
from setuptools import setup#从setuptools模块导入setup函数
setup(#setup函数接收大量参数,其中很多是可选的,这里用关键字指出哪个值赋给哪个参量
name='vsearch', #一般按模块命名发布包
version='1.0',
description='The Head First Python Search Tools',
author='HF Python 2e',
author_email='[email protected]',
url='headfirstlabs.com',
py_modules=['vsearch'],#指定创建发布包时要包含的.py文件
)
README.txt文件必须存在,但其内容可以为空
此时应该有三个文件vsearch.py
、setup.py
、README.txt
,并且它们在同一个文件夹myModules
中
在windows的命令行中输入以下命令
C:\Users\13272>cd Desktop\myModules
C:\Users\13272\Desktop\myModules>py -3 setup.py sdist
#运行Python 3,执行setup.py中的代码,并传递"sdist"为参数
执行完毕后,setuptools在当前工作文件夹myModules
文件夹下创建了dist
文件夹
其中就有创建好的源发布文件vsearch-1.0.tar.gz
(或vsearch-1.0.zip
,取决于平台)
这是一个可安装的文件,其中包含了模块的源代码
创建了源发布文件之后(作为ZIP文件或作为一个压缩tar归档文件),现在可以把你的模块安装到 site-packages了
Python3.4(及更新版本)提供pip工具
pip表示 Package Installer for Python( Python的包安装工具)
进入上一步创建的dist
文件夹,在 Windows窗口中,按住Shif键不放,然后单击鼠标右键,从菜单中选择 Open command window here(在这里打开命令PowerShell窗口)在这个命令提示窗口中键入下面的命令:
PS C:\Users\13272\Desktop\myModules\dist> py -3 -m pip install vsearch-1.0.tar.gz
#运行Python 3时包括模块pip,然后让pip安装指定的压缩tar文件。
现在vsearch模块已经安装到site-packages,可使用import vsearch
导入模块
ps.要卸载已有的模块,同样打开命令PowerShell窗口输入以下命令:
PS C:\Users\13272\Desktop\myModules\dist> pip uninstall vsearch
PyPI(读作“ ple-pee-eye”,Python Package Index)是Python集中管理的基于web的软件存储库,让所有 Python程序员共享各种第三方 Python模块。
连接互联网时,可以使用pip从PyPI自动安装包
要了解这个网站上提供了哪些模块,可以访问PyPI网站:https://pypi.python. org/pypi
例如
可以用Flask轻量级Web框架构建一个Web应用
可以用Jinja2文本模板引擎创建HTML页面
要正式地共享你的模块,可以把发布文件上传到PyPI
要了解通过PyPI上传和共享发布文件的过程,请阅读Python Packaging Authority维护的一个在线指南:https://www.pypa.io