在Python中,存在包和模块两个常见概念。
模块:编写Python代码的py文件
包:用来分门别类存放模块代码的文件夹,【一般存在一个__init__.py文件】
一、模块的几种导入方式:
__init__.py文件:
__all__变量的使用:
__init__.py文件中导入其他模块文件,推荐使用
from . import xxx |
可以使用别名来简化导入的模块名称【as的使用】。
1.创建一个项目,一个文件夹作为包Mypakage,两个.py文件,t1.py和t2.py,作为两个模块,为了与普通文件夹区分,需要在Mypakage文件夹下增加一个__init__.py文件,文件内变量声明方式:__all__=["t1","t2"]或者直接 from . import t1 from . import t2,这里的“.”表示当前目录下。
在t1.py文件中,写入一个函数 t1 ()
def t1():
print("这是mypakage包下的t1模块下的t1方法")
t2.py文件中,写入一个函数 t2( )
def t2():
print("这是mypakage的t2模块下的t2方法")
__init__.py文件:
# __all__=["t1","t2"]
from . import t1
from . import t2
2.进入命令行,切入至Mypakage文件夹目录下,进入python
①利用import 包路径名称导入,包路径.模块名导入 即:import xxx.** ,引用时**.模块名.
Microsoft Windows [版本 10.0.15063]
(c) 2017 Microsoft Corporation。保留所有权利。
C:\Users\admin>d:
D:\>cd D:\Project\projects
D:\Project\projects>python
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Mypakage
>>> Mypakage.t1.t1()
这是mypakage包下的t1模块下的t1方法
>>>
②利用from包路径及包名 import 模块名 即xxx.xx.模块名,引用时直接用模块名
Microsoft Windows [版本 10.0.15063]
(c) 2017 Microsoft Corporation。保留所有权利。
C:\Users\admin>d:
D:\>cd D:\Project\projects
D:\Project\projects>python
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from Mypakage import t1
>>> t1.t1()
这是mypakage包下的t1模块下的t1方法
③利用import 包路径及包名 import * 导入某个包下的所有模块
Microsoft Windows [版本 10.0.15063]
(c) 2017 Microsoft Corporation。保留所有权利。
C:\Users\admin>d:
D:\>cd D:\Project\projects
D:\Project\projects>python
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Mypakage.t1
>>> t1.t1()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 't1' is not defined
>>> from Mypakage import *
>>> t1.t1()
这是mypakage包下的t1模块下的t1方法
>>> t2.t2()
这是mypakage包下的t2模块下的t2方法
发布模块:
在文件的主目录创建setup.py文件,编辑如下:
from distutils.core import setup setup(name=”ljh”,version=”1.0”,description=”描述”,author=”作者”,author_email=”作者邮箱”,py_modules=[“xx.xx.xx.py”,”xx.xx.xxx.py”]) |
如下图所示:
执行构建命令:
python setup.py build |
执行打包命令:
python setup.py sdist |
之后项目中结构如下:
执行安装命令:
python setup.py install |
就会将我们打包后的压缩包安装到Python对应的第三方模块下:
python36\Lib\site-packages |
我们在代码中就可以导入使用这个模块了。