在 MacBook 上为 Raspberry Pi 3 构建 Python 平台轮

Building a Python platform wheel for a Raspberry Pi 3 on a MacBook

我有一个包含 Rust 扩展的 python2 包。

这些扩展在我的笔记本电脑上针对 armv7 进行交叉编译,并输出到 .dylib 文件中,然后添加到 Python 包中。

通过发出以下命令构建包: python setup.py bdist_wheel --plat-name linux-armv7l

问题是这会在 dist 文件夹中生成以下轮子: <mypackage>-0.1.17-cp27-cp27m-linux_armv7l.whl

生产的车轮命名错误,无法安装在 Raspberry Pi 上。

但是,当我将轮子重命名为: <mypackage>-0.1.17-cp27-cp27mu-linux_armv7l.whl

轮子现在可以安装在我的树莓派上了。

如何让 python setup.py bdist_wheel 为我的构建发行版输出带有正确标签的轮子?

cpXXmcpXXmu 指定目标 python 实现是否具有广泛的 unicode 支持(python 是否使用 --enable-unicode=ucs4 编译)。您可以使用

检查
$ python -c "import sys; print('ucs2' if sys.maxunicode == 65535 else 'ucs4')"

如果它打印 ucs2,那么使用 python 安装构建的轮子将产生 cp27m 个轮子,否则要产生 cp27mu 个轮子,它应该打印 ucs4.

MacOS 上的系统 python 没有广泛的 unicode 支持,因此您需要安装另一个支持 unicode 的 python。要么

  • 安装 brewed python2:

    $ brew install python
    
  • 或从Python.org

  • 下载并安装python 2.7.15的最新官方pkg安装程序
  • 或者自己从源代码编译一个:

    $ wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
    $ tar xvf Python-2.7.15.tgz
    $ cd Python-2.7.15
    $ ./configure --enable-unicode=ucs4
    $ make
    $ make install
    

    请注意 --enable-unicode=ucs4 或 python 将在没有广泛的 unicode 支持的情况下编译。

现在构建轮子时,一定要使用正确的可执行文件(不是系统的/usr/bin/python)。

您可以在 PEP 261 中阅读有关宽 unicode 的更多信息。