如何为多个Python版本和平台构建编译模块

如何为多个Python版本和平台构建编译模块

问题描述:

我已经为自己的进程构建了一个Python 3模块。

I have build a Python 3 module for my own process.

我使用cython编译和包装C ++源代码。

I use cython to compile and wrap C++ sources.

我有一台具有Python 3.4的Linux(Debian Jessie)计算机,因此cythonize使我成为 Processing.cpython-34m.so 并将其复制到 /usr/local/lib/python3.4/dist-packages

I have a Linux (Debian Jessie) machine with Python 3.4 and so cythonize make me a Processing.cpython-34m.so and copy it to /usr/local/lib/python3.4/dist-packages.

但是当我在具有python3.5,我必须重新编译所有内容。

But when I use it on another machine which has python3.5, I have to recompile everything.

如何从我的机器上为所有Python 3版本和多个平台构建Linux或pip软件包(在这里,仅Jessie和Stretch(可能非常接近,确实相等))?
最好不必在我的机器上安装所有版本的Python 3。

How can I build a Linux or pip package from my machine for all Python 3 version and multiple platforms (here, just Jessie and Stretch, which might be very closed indeed equal) ? Preferably without having to install all version of Python 3 on my machine.

这是我的用于cythonization的setup.py文件:

Here is my setup.py file for cythonization :

from distutils.core import setup, Extension
from Cython.Build import cythonize

setup(ext_modules = cythonize(Extension(
            "MyProcessing",
            sources=["MyProcessing.pyx", "myprocess.cpp", "mythirdp.cpp"],
            language="c++", 
        )))

谢谢。

使 manylinux1 二进制轮在各个发行版中均有效-请参见 PEP-513

Make manylinux1 binary wheels that work across distributions - see PEP-513

它涉及在官方PyPa上运行docker构建 manylinux1 泊坞窗映像,可为所有python版本构建二进制*。

It involves running a docker build on the official PyPa manylinux1 docker images that builds binary wheels for all python versions.

这些*可以在PyPi上分发,并且可以在各个分发版中使用。

These wheels can be distributed on PyPi and are usable across distributions.

约束是,构建需要在Centos5发行版中完成,该发行版的 manylinux1 映像基于兼容性。

The constraint is that the build needs to be done in a Centos5 distribution which the manylinux1 image is based on for compatibility.

请参见 PyPa的manylinux演示存储库例如。