[英]Cython --embed flag in setup.py
我开始用 Cython 编译我的 Python 3 项目,我想知道是否可以将我当前的编译时间工作流减少到一条指令。
到目前为止,这是我的 setup.py:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
extensions = [
Extension("v", ["version.py"]),
Extension("*", ["lib/*.py"])
]
setup(
name = "MyFirst App",
ext_modules = cythonize(extensions),
)
这是我从 shell 运行以获取我的可执行文件的内容:
python3 setup.py build_ext --inplace
cython3 --embed -o main.c main.py
gcc -Os -I /usr/include/python3.5m -o main main.c -lpython3.5m -lpthread -lm -lutil -ldl
整个过程工作得很好,我想知道是否有办法将最后两条指令也嵌入到 setup.py 脚本中。
谢谢
首先查看您正在使用的实用程序的文档。 如果有复杂的arguments,可能有配置文件。
这应该整理你的第一个命令:
# setup.cfg
[build_ext]
inplace=1
我在文档中没有看到有关构建后步骤的任何内容,而且我真的不希望此过程之后执行 shell 命令。 build_ext
用于构建make
非常可用并且通常用于构建 C 二进制文件。
将Makefile
添加到您的项目中。 如果您安装了gcc
,您可能已经安装了make
:
# Makefile (lines need to start with tab)
compile:
python3 setup.py build_ext --inplace
cython3 --embed -o main.c main.py
gcc -Os -I /usr/include/python3.5m -o main main.c -lpython3.5m -lpthread -lm -lutil -ldl
现在您只需键入make
或make compile
即可获得所需的效果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.