zoukankan      html  css  js  c++  java
  • Python模块制作

    在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。

    定义自己的模块

    比如有这样一个文件test.py,在test.py中定义了函数add

      def add(a,b):
            return a+b
    

    调用自己定义的模块

    在其他文件中就可以先import test,然后通过test.add(a,b)来调用了,当然也可以通过from test import add来引入

    #fileName:main.py
    import test
    
    result = test.add(11,22)
    print(result)
    
    

    测试模块

    在实际开中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息,例如:

    #fileName:test.py
     def add(a,b):
            return a+b
    
    if __name__ == '__main__':  # 用来进行测试   
        ret = add(12,22)
        print('int test.py file,,,,12+22=%d'%ret)
    

    如果此时,在其他py文件中引入了此文件的话,想想看,测试的那段代码是否也会执行呢!

    #fileName:main.py
    import test
    
    result = test.add(11,22)
    print(result)
    
    

    模块发布

    上面的都是简单的例子,学会了模块的制作后下来就是发布了,下面就是例子

    mymodule目录结构体如下

    .
    ├── setup.py
    ├── suba
    │   ├── aa.py
    │   ├── bb.py
    │   └── __init__.py
    └── subb
        ├── cc.py
        ├── dd.py
        └── __init__.py
    

    编辑setup.py文件

    py_modules需指明所需包含的py文件

    from distutils.core import setup
    
    setup(name="ylg", version="1.0", description="ylg's module", author="ylg", py_modules=['suba.aa', 'suba.bb', 'subb.cc', 'subb.dd'])
    

    构建模块

    执行(window和linux一样)

    python setup.py build
    

    构建后目录结构

    .
    ├── build
    │   └── lib.linux-i686-2.7
    │       ├── suba
    │       │   ├── aa.py
    │       │   ├── bb.py
    │       │   └── __init__.py
    │       └── subb
    │           ├── cc.py
    │           ├── dd.py
    │           └── __init__.py
    ├── setup.py
    ├── suba
    │   ├── aa.py
    │   ├── bb.py
    │   └── __init__.py
    └── subb
        ├── cc.py
        ├── dd.py
        └── __init__.py
    
    

    生成发布压缩包

    打包后,生成最终发布压缩包ylg-1.0.tar.gz , 目录结构
    Windows也可以用压缩软件压缩

    .
    ├── build
    │   └── lib.linux-i686-2.7
    │       ├── suba
    │       │   ├── aa.py
    │       │   ├── bb.py
    │       │   └── __init__.py
    │       └── subb
    │           ├── cc.py
    │           ├── dd.py
    │           └── __init__.py
    ├── dist
    │   └── ylg-1.0.tar.gz
    ├── MANIFEST
    ├── setup.py
    ├── suba
    │   ├── aa.py
    │   ├── bb.py
    │   └── __init__.py
    └── subb
        ├── cc.py
        ├── dd.py
        └── __init__.py
    

    模块安装、使用

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

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

    使用和其他模块一样就不说了

  • 相关阅读:
    C++内存机制中内存溢出、内存泄露、内存越界和栈溢出的区别和联系
    ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量
    C++ 智能指针 auto_ptr 和 shared_ptr
    Java初始和环境搭建(一)
    Spring_01
    Linux中常用命令
    linux_Ubuntu项目运行环境搭建
    Nginx_Ubuntu
    idea运行时 Process finished with exit code -1073741819 (0xC0000005)
    MySQL_基础
  • 原文地址:https://www.cnblogs.com/yangliguo/p/7921493.html
Copyright © 2011-2022 走看看