Skip to main content

自动Cython,使用Cython批量编译.py文件为.pyd文件!

Project description

AutoCython

自动 Cython, 使用 Cython 批量编译 .py 文件为 .pyd 文件! py_pyd

安装

pip install AutoCython-jianjun

依赖

Cython 和 C/C++ 编译器

如果你都配置完毕了你可以跳过本节.

Cython

pip install Cython

C/C++ 编译器

推荐 gccvisual studio 选一个, 其他编译器请查阅 Cython 文档.

  • VS 安装简便, 占用空间大, 配置简单.
  • gcc 安装简便, 占用空间小, 配置比较复杂.

不想折腾或者你是 Windows 的话推荐安装 VS, Linux 等系统可以直接使用自带的 gcc。

大部分的编译环境都可以使用, 我在 Win, Linux, Mac, Python3.6 到 Python3.10 都可以使用.

需要注意的是, 如果你使用的 Python 是64位的, 那么对应的 C、C++ 编译器也必须为64位;

win下gcc推荐安装MinGW

使用

命令行

命令行

使用命令行进行编译:

AutoCython -h 或者 AutoCython --ch 查看英文和中文帮助.

# 编译一个文件
AutoCython -f test.py

# 编译一个目录
AutoCython -C D:/python_code/ProjectPath

AutoCython

例子

编译目录 D:/python_code/ProjectPath
排除所有名为 tmp.py 的文件
排除 ./ProjectPath/print_cy.py 文件
排除 ./ProjectPath/data/tmp 目录下的文件不编译
使用2个CPU核心
只删除编译后产生的 build 文件夹和中间文件 setup_file, 保留自动生成的 C 代码.\

AutoCython -C D:/python_code/ProjectPath -E tmp.py;./ProjectPath/print_cy.py;./ProjectPath/data/tmp -M 2 -D bp

特性

  • 全自动:自动编译当前目录下所有.py文件, 支持指定目录编译或单文件编译;
  • 个性化:支持指定排除目录或排除文件跳过编译;
  • 高效率:默认启动进程数为cpu核心数四分之一, 大多数情况下可以把cpu跑满;
  • 易纠错:快速纠错, 在编译失败时能极快的获取错误信息;

常见错误

  • print(end='')
    Cython 不支持 print 函数的 end 参数, 可以在外部定义 def my_print(*args, **kwargs): print(*args, end='', **kwargs), 然后在需要编译的文件中导入这个外部函数.

  • 新建文本文档.py
    文件名需要符合 C 命名规范

其他问题请查阅 Cython 官方文档.

手动指定不编译

在不需要编译的文件 头两行 任意一行写上 # AucoCython No Compile 则该文件会跳过编译.

更新记录

  1. 20220613 更新对Linux的支持, Linux下需要配置gcc&g++
  2. 20221123 可以通过文件头手动指定不编译的文件
  3. 20230306 更新可以指定命令行头如 Python310 以此支持非Widnows系统下编译
  4. 20230324 更新文档
  5. 20240506 修复编译失败时遗漏复原 init.py 的问题

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

autocython_jianjun-1.3.4.tar.gz (9.9 kB view hashes)

Uploaded Source

Built Distribution

AutoCython_jianjun-1.3.4-py3-none-any.whl (11.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page