标签:
通过 python 模块共享代码, 可以向整个python社区开放你的代码,
如果创建, 安装和发布你的共享模块呢?
多行注释, 用3个双引号
""" this is
a comment. """
单行注释 #
模块就是一个包含python代码的文本文件, 对模块的主要需求就是要求文件名以.py结尾.
例如:
def checkList(the_list):
for each_item in the_list:
if isinstance(each_item, list):
checkList(each_item)
else:
print(each_item)
将上边的代码, 保存成 nester.py
python标准库中已经预加了大量模块, 而且它们已经在你的计算机上了. 网上PYPI (python package index)很多
1. 首先为模块创建一个文件夹
例如为文件夹起名为 wester, 将文件 wester.py 复制到这个文件夹中.
2. 在文件夹中创建一个名为 setup.py 文件
这个文件中包含有关发布的元数据. 编辑这个文件, 增加下边代码:
from distutils.core import setup
setup(
name = ‘nester‘,
version = ‘1.0.0‘,
py_modules = [‘nester‘], -- 将模块的元数据与setup函数的参数关联.
author = ‘moveofgod‘,
author_email = ‘leon52china@163.com‘,
url = ‘http://www.cnblogs.com/moveofgod‘,
description = ‘only test‘,
)
现在已经有了一个文件夹, 其中包含两个文件, 模块代码放在 nester.py中, 模块由关的元数据放在setup.py中.
3. 构建一个发布文件.
在 nester文件夹中打开一个终端窗口, 输入命令 python3 setup.py sdist
4. 将发布安装到你的 python 本地副本中
在终端输入命令, sudo python3 setup.py install
import nester
因为 nester 已经安装到本地了
python的模块实现命名空间
python中的所有代码都与一个命名空间关联.
主python程序中(以及IDLE shell中)的代码与一个名为__main__的命名空间关联. 将代码放在其单独模块中时,
python会自动创建一个与模块同名的命名空间.所以, 你的模块的代码会在一个名为nester的命名空间关联.
所以, 调用函数时, 一般会写, nester.checkList(movies)
如果使用 from nester import checkList, 会把指定的函数名增加到当前的命名空间中, 这样一来, 就不用使用限定词nester,
直接使用函数名就可以了. 这种形式会搅乱你本地的命名空间, 同名时, 本地的函数名字会被覆盖.
上传到 PYPI
首先注册一个 ID
如果按照上边的步骤, 已经把函数中的代码放在一个模块中, 用来创建一个发布, 而且已经安装在你的python本地副本中,
要把这个发布上传到 PYPI, 需要完成以下两个步骤: 通过命令行窗口注册 PYPI, 通过命令行窗口上传.
python3 setup.py register, 按照你刚才申请的user信息, 确认一遍.
python3 setup.py sdist upload 使用这个命令上传.
python 会在一组特定的位置搜索模块(import sys; sys.path 可以找到这个路径)
发布工具创建的nester.pyc 是一种中间代码, 类似java的jvm中间字节码.
for num in range(4):
print(num)
标签:
原文地址:http://www.cnblogs.com/moveofgod/p/5569851.html