09 Python C拓展在各平台的打包与发布 赵丰Python C拓展在各平台的打包 与发布 赵丰 GitHub ID: zhaofeng-shu33 在 Windows 平台上:没有找到编译器; 在 Unix 平台上: 无法解决软件依赖。 假如 numpy 官方的源只包含一堆 .c 文件 现在你要 pip install numpy 结果将是 1 为什么需要C拓展包 2 如何在不同的平台打包并发布 编写 setup.py else: do others 处理不同平台的差异 3 C拓展打包的注意事项 • 在 Linux 系统上打包无法上传到 pypi.org,只能用官方提供的 CentOS 6.10 Docker 打包 • C拓展包如果依赖额外的动态库需要一起打包进去并且在包导入的时候动 态添加PATH • 每一个Python版本打包的C拓展包相互独立,py37不能安装py36打包的 二进制包 • • 在Windows平台上需要预装 Visual Studio C++ 套件才能打包 4 用持续集成工具打包 • 以 Travis 为例,针对 MacOS 和 ManyLinux,示例配置文件如下: THANK YOU0 码力 | 6 页 | 414.79 KB | 1 年前3
7-韦泽华-一键将C和Cpp代码转换为Python能调用的代码一键将 C/C++ 代码转换为 Python 能调用的代码 韦泽华 大家以前都是怎样调用C++代码呢? 1. Cython 2. boost.python/pybind11 3. ctypes 先不讨论这些工具的优劣 先给大家介绍一下 如何使用c2py来调用C++代码 在此之前给大家看一下要调用的C++代码源文件 • 我肯定是会拿上期所的API来作示范: (看一眼就好了) c2py的使用分两步走 • 第一步,生成.pyd(.so)文件 • 第二步,调用代码,并享受完备的type hint。 与其他工具的用法进行一下比较? 与pybind11进行比较 • c2py:两个命令 • pybind11:1137行代码? • 不, 其实是11,376行代码: 跟pybind11比算个什么事?根本 不在一个次元! 要比就和不需要写C++代码的工 具比! 与ctypes进行比较 与ctypes进行比较 • c2py:调用代码,并享受type hint。 • ctypes:调用代码?? 如果把调用C++代码当作吃饭,那么: 工具 科技等级 手撸Cython 手撕猎物;钻木取火 Boost.python/pybind11 用猎枪打猎;在现代化的厨房里做菜 ctypes 在某个便利店里买吃的。(只卖番茄炒蛋) c2py 外卖app 所以 调用C++,认准 现代化的外卖app:c2py0 码力 | 12 页 | 1.24 MB | 1 年前3
MuPDF 1.24.0 Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Using MuPDF with C 5 2.1 Basic MuPDF usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5 C API 61 5.1 MuPDF modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 7 Language Bindings 201 7.1 The C++ MuPDF API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 7.2 The Python and C# MuPDF APIs . . . . . . . . . . . . .0 码力 | 249 页 | 830.15 KB | 8 月前3
MuPDF 1.25.0 Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Using MuPDF with C 5 2.1 Basic MuPDF usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6 C API 65 6.1 MuPDF modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 8.2 The C++ MuPDF API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 8.3 The Python and C# MuPDF APIs . . . . . . . . . . . . .0 码力 | 259 页 | 1.11 MB | 8 月前3
MuPDF 1.23.0 Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Using MuPDF with C 5 2.1 Basic MuPDF usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5 C API 61 5.1 MuPDF modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 7 Language Bindings 201 7.1 The C++ MuPDF API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 7.2 The Python and C# MuPDF APIs . . . . . . . . . . . . .0 码力 | 245 页 | 817.74 KB | 8 月前3
MuPDF 1.22.0 Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Using MuPDF with C 5 2.1 Basic MuPDF usage example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4 C API 121 4.1 MuPDF modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5 Language Bindings 141 5.1 The C++ MuPDF API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 5.2 The Python and C# MuPDF APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 5.3 Installing0 码力 | 175 页 | 698.87 KB | 8 月前3
Python的智能问答之路 张晓庆 任务拆解、各个击破 任务拆解 • 业务 Ø 解决什么问题? • 数据 Ø 标注数据 Ø 训练数据 Ø 测试数据 Ø 评估数据 • 建模 Ø 输入输出? Ø 工作流? • 语言工具 Ø C++ Ø Python Ø Java Ø GO • 模型 Ø 统计模型 Ø 传统机器学习模型 Ø 深度学习模型 Ø 如何选择?是否组合? • 评估 Ø 评估指标 Ø 工具 • 迭代 Ø 策略? 各个击破-语言工具 • 开发成本 Ø C++:简洁紧凑,灵活方便,需要精细设计,开 发成本较高 Ø Python:语法简单,完全面向对象,容易入门和 使用 Ø Java:语法简单,面向对象,但框架较重,相对 而言较适用业务程序开发 Ø GO:语法简单,支持面向对象、函数、接口编 程,开发速度媲美Python • 平台迁移性 Ø C++:受环境和编译器影响较大 Ø Python 默认兼容 Ø Java:跨平台可用 Ø GO:支持交叉编译,可在不同平台直接运行 • 运行速度 Ø C++:最快 Ø Python:最慢,但是可以通过外调 C/C++/Java分担慢速计算的压力 Ø Java:较快 Ø GO:C语言一样的执行速度 • 工具完备性 Ø C++:多为开发者开源,如切词、词性 标注等基础工具 Ø Python:海量的第三方开源工具库 Ø Java:较多开源NLP工具,LingPipe、0 码力 | 28 页 | 2.60 MB | 1 年前3
Objeet Oriented Python
TutorialOOP in Python 14 Screenshot Languages Supported C/C++, C#, CSS, CoffeeScript, HTML, JavaScript, Java, JSON, Julia, Objective-C, PHP, Perl, Python, Ruby on Rails, Ruby, Shell script, Scala different arguments. Language Supported Almost every language (60+ languages) like Python, C, C++, C#, Java etc. OOP in Python 17 Python data structures are very intuitive 'Java', 'C#'} >>> topics.add('C++') >>> topics {'C#', 'C++', 'Java', 'Python'} >>> >>> #union(s) Method, returns a union of two set. OOP in Python 25 >>> topics {'C#', 'C++', 'Java'0 码力 | 111 页 | 3.32 MB | 1 年前3
Hello 算法 1.0.0 Python版教程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算 Chen、mgisr、JoseHung、qualifier1024、pengchzn、Guanngxu、longsizhuo、L‑Super、what‑is‑me、 yuan0221、lhxsm、Slone123c、WSL0809、longranger2、theNefelibatas、xiongsp、JeffersonHuang、 hongyun‑robot、K3v123、yuelinxin、a16su、ga ,给定三个算法 A、B 和 C : # 算法 A 的时间复杂度:常数阶 def algorithm_A(n: int): print(0) # 算法 B 的时间复杂度:线性阶 第 2 章 复杂度分析 hello‑algo.com 29 def algorithm_B(n: int): for _ in range(n): print(0) # 算法 C 的时间复杂度:常数阶 def0 码力 | 362 页 | 17.54 MB | 1 年前3
Hello 算法 1.1.0 Python版教程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算 CKICEx、K3v123、IsChristina、JoseHung、qualifier1024、 pengchzn、Guanngxu、QiLOL、L‑Super、WSL0809、Slone123c、lhxsm、yuan0221、what‑is‑me、 rongyi、JeffersonHuang、longranger2、theNefelibatas、yuelinxin、xiongsp、nanlei、a16su、 ,给定三个算法 A、B 和 C : # 算法 A 的时间复杂度:常数阶 def algorithm_A(n: int): print(0) # 算法 B 的时间复杂度:线性阶 def algorithm_B(n: int): for _ in range(n): 第 2 章 复杂度分析 hello‑algo.com 29 print(0) # 算法 C 的时间复杂度:常数阶 def0 码力 | 364 页 | 18.42 MB | 1 年前3
共 581 条
- 1
- 2
- 3
- 4
- 5
- 6
- 59













