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 动态链接库,并进行相应的封装

  • 相关阅读:
    函数式宏定义与普通函数
    linux之sort用法
    HDU 4390 Number Sequence 容斥原理
    HDU 4407 Sum 容斥原理
    HDU 4059 The Boss on Mars 容斥原理
    UVA12653 Buses
    UVA 12651 Triangles
    UVA 10892
    HDU 4292 Food
    HDU 4288 Coder
  • 原文地址:https://www.cnblogs.com/jiading/p/12187901.html
Copyright © 2011-2022 走看看