Создание колеса платформы Python для Raspberry Pi 3 на MacBook - PullRequest
0 голосов
/ 14 мая 2018

У меня есть пакет 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 вывести колесо с меткой, соответствующей моему встроенному дистрибутиву?

1 Ответ

0 голосов
/ 14 мая 2018

cpXXm и cpXXmu указывают, имеет ли целевая реализация Python широкую поддержку юникода или нет (python был скомпилирован с --enable-unicode=ucs4 или нет).Вы можете проверить это с помощью

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

. Если он печатает ucs2, то колеса, построенные с установкой Python, будут производить cp27m колес, в противном случае для производства cp27mu колес должно быть напечатано ucs4.

Системный python в MacOS не имеет широкой поддержки юникода, поэтому вам понадобится другая установка python, в которой он есть.Либо

  • установите заваренный python2:

    $ brew install python
    
  • , либо загрузите и установите последнюю официальную pkg -установку python 2.7.15 из Python.org

  • или скомпилируйте его самостоятельно из источника:

    $ 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 будут скомпилированыбез широкой поддержки юникода.

При сборке колеса обязательно используйте правильный исполняемый файл (не системный /usr/bin/python).

Вы можете прочитать больше оширокий юникод в PEP 261 .

...