首页 > 解决方案 > 在 MacBook 上为 Raspberry Pi 3 构建 Python 平台轮

问题描述

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

这些扩展在我的笔记本电脑上针对 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

现在可以将轮子安装在我的 Raspberry 上。

我怎样才能python setup.py bdist_wheel为我的内置发行版输出带有正确标签的轮子?

标签: pythonraspberry-pisetuptoolssetup.pypython-packaging

解决方案


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 支持,因此您需要另一个安装有一个的 python。任何一个

  • 安装 brewed python2

    $ brew install python
    
  • 或从Python.org下载并安装最新的官方pkgpython 2.7.15 安装程序

  • 或自己从源代码编译:

    $ 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=ucs4or python 将在没有广泛的 unicode 支持的情况下编译。

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

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


推荐阅读