python的包

什么是模块:xxx。py文件
社么是包:多个模块组成的文件夹
为啥要使用模块:
让我下次直接使用,不需要再重写,或者方便多人开发

1、新建一个文件夹testModel,

在此文件夹中创建一个名为 __init__.py的文件,此时python解释器就认为它是一个包,

2、引用这个包的方法:

我先在我创建的testModle中创建一个新的模块 aa.py,简单写入测试内容:

def AA():
  print('你已经成功引入这个包')

我们在这个包的外面新建一个test.py
执行以下代码,或者用交互的方式执行,

import testModle.aa
testModle.aa.AA()

如果出现以下结果,说明testModle这个包已经创建,并执行成功。

如果aa模块有多个def函数我们可以用testModle.aa.函数名调用所需要的函数,有没有一种方法可以直接写函数名调用呢?

这里介绍另一种引入方式(以引入随机数函数为例:)

from  random import randint
num = randint(1,10)
print(num)

我们只导入了random包里面的randint方法,如果要导入两个
可以这样写from random import randint,randrange,如果导入多个则可以from random import*
,但是不建议这样用,原因是:
如果你导入了两个不同的模块,但是这两个模块中存在相同的方法(函数),那么后引入的那个模块中的方法就会覆盖前面模块中相同的方法

总结:

经过测试发现from random import*好像只能导入模块不能导入包,

导入包,

from testModel import *
AA()
Bb()

这样总是出错,但是导入模块就可以随便用里面的方法,只写方法明就ok,如下:

from aa import *
AA()
A2()

3.__init__.py
这个文件可以写入__all__
假如你的包中有两个模块 :aa,bb。
from random import *:直接导入random包的所有模块,但是你只想要aa模块导入,除了 from random import aa 这种方法还可以用__all__
在文件__init__.py中加入代码:

__all__ = ['aa']

all属性由列表构成,它规定了模块的所有可见方法,会使属性列表之外的成员全部私有化。

只有在执行语句 from module import * 时,all属性才会起作用。此时所有枚举的成员被import,而其他成员被私有化。

但是在__init__.py中加入__all__,之后model也可以用import * ,这样写的

__all__ = ['aa','bb']

以下代码又可以用了,

from testModel import *
aa.AA()
bb.bb()

这里有点疑问,未0完待续。。。。

3.制作一个自己的包

根据上面建的包,现在应该是这样的目录结构:

testModel
├── aa.py
├── bb.py
└── __init__.py

接下来在testModel里面建个文件 :setup.py
在这个文件中写入:

from distutils.core import setup

setup(name="lxy", version="1.0", description="lxy's module", author="wenwen", py_modules=['aa', 'bb'])

以交互的方式运行setup.py,输入以下代码:

python setup.py build

执行结果:

running build
running build_py
creating build
creating build\lib
copying aa.py -> build\lib
copying bb.py -> build\lib

这样标识执行成功,你的目录变成一下结构:

testModel
├── aa.py
├── bb.py
├── __init__.py
├── setup.py
└── build
    └── lib
     ├──aa.py
         └──bb.py

接下来执行:

linux 环境: python setup.py sdist
win环境:python setup.py bdist_wininst

你会发现多了个dist文件夹,里面有安装程序(tar.gz或者。exe),这就是你真正做完的包

testModel
├── MANIFEST
├── aa.py
├── bb.py
├── __init__.py
├── setup.py
├── build
    └── lib
     ├──aa.py
         └──bb.py
         └── build
└── dist
    └──lxy-1.0.tar.gz

包做完之后就可以开始安装了:

模块安装、使用
1.安装的方式

找到模块的压缩包
解压
进入文件夹
执行命令python setup.py install

注意:

如果在install的时候,执行目录安装,可以使用python setup.py install --prefix=安装路径

2.模块的引入

在程序中,使用from import 即可完成对安装的模块使用

from 模块名 import 模块名或者*

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值