zoukankan      html  css  js  c++  java
  • [转载]Python 包构建教程

    [转载]Python 包构建教程

    来源:https://www.cnblogs.com/cposture/p/9029023.html#_lab2_4_4

    文章写的特别棒,我这里就不粘贴了,只列举一些重点:

    基础概念

    • module 模块:module 是 python 中代码重用的基本单元,一个 module 可以通过 import 语句导入到另一个 module;module 分为:pure python module(纯 python 模块)、extension module(扩展模块)和 package(包)
    • pure python module:纯 python 模块是用纯 python 语言编写的模块,单一的 .py 文件作为一个模块使用,也就是一个 .py 可以称为模块了
    • extension module:扩展模块是用底层的 C/C++、Objective-C 或 Java 编写的模块,通常包含了一个动态链接库,比如 so、dll 或 Java,目前 distutils 只支持 C/C++ 和 Objective-C,不支持 Java 编写扩展模块;但是 python 提供了一个 JCC 这样一个用于生成访问 Java 类接口的 C++ 代码的胶水模块,应该也是可以使用 Java 编写模块的。
    • package:包是一个带有 __init__.py 文件的文件夹,用于包含其他模块
    • root package:root package 是包的最顶层,它不是实质性的包,因为它不包含 __init__.py 文件。大量的标准库位于 root package,因为它们不属于一个任何更大的模块集合了。实际上,每一个 sys.path 列举出来的文件夹都是 root package,你可以在这些文件夹中找到大量的模块。
    • distribution:模块分发,一个归档在一起的 python 模块集合,它作为一个可下载安装的资源,方便用户使用,作为开发者便需要努力创建一个易于使用的 distribution
    • distribution root:源代码树的最顶层,也就是 setup.py 所在的位置。

    如果 python 模块分布在不同的文件夹,最好是在该文件夹下创建一个 __init__.py 文件,以表示它是一个包

    使用拓展以实现调用cpp文件时,我们需要编写 setup 脚本编译我们的 cpp 文件为 so 动态链接库,并进行相应的封装

  • 相关阅读:
    Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?(转)
    nrf开发笔记一开发软件
    ARM CORTEX-M3的时钟
    stm32之Cortex系统定时器(SysTick)
    micrium ucprobe使用笔记
    C语言结构体初始化的四种方法(转载)
    setsockopt的作用
    Java之RandomAccessFile小结
    疯狂JAVA讲义---第十五章:输入输出(上)流的处理和文件
    java压缩解压zip文件,中文乱码还需要ant.jar包
  • 原文地址:https://www.cnblogs.com/jiading/p/12187901.html
Copyright © 2011-2022 走看看