Как связать python-сервер с pyinstaller для AppStore как только 64-битный? - PullRequest
0 голосов
/ 22 ноября 2018

Контекст:

Я пытаюсь разместить электронное приложение в App Store.Приложение имеет веб-интерфейс и серверную часть Python.Пока ничего сложного.

Однако в бэкэнде есть отдельный сервер, написанный на python.Этот сервер является автономным приложением.

Приложение Electron связывает основное приложение с автономным сервером Python.

Проблема:

При сборкесервер в качестве исполняемого файла использую pyinstaller в среде разработки python 3.5.При загрузке в AppStore я получаю следующую ошибку:

1 package(s) were not uploaded because they had problems:
/var/folders/39/3v0phzy173s3qxkbxzvcpd5c0000gn/T/82AB662A-44C8-41E9-A213-8BF672F3DF10/1443777291.itmsp - Error Messages:
    ERROR ITMS-90240: "Unsupported Architectures. Your executable contained the following disallowed architectures: '[i386 (in com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/AppKit._AppKit.so, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/AppKit._inlines.so, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/CoreFoundation._CoreFoundation.so, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/CoreFoundation._inlines.so, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/Foundation._Foundation.so, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/Foundation._inlines.so, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/PIL._imaging.so, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/PIL._imagingtk.so, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/PIL._webp.so, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/libjpeg.9.dylib, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/libopenjp2.2.1.0.dylib, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/libtiff.5.dylib, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/libwebp.7.dylib, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/libwebpdemux.2.dylib, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/libwebpmux.3.dylib, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/libz.1.2.11.dylib, com.ShapeRobotics.FableMac.pkg/Payload/Fable.app/Contents/Resources/app/app/app/server/objc._objc.so)]'. New apps submitted to the Mac App Store must support 64-bit starting January 2018, and Mac app updates and existing apps must support 64-bit starting June 2018."

Мы попытались создать сервер, используя это:

pyinstaller server.spec --distpath ../app/app --noconfirm

Это не сработало.

ДругойЗаклинание, которое я использую для объединения сервера Python, пытающегося форсировать 64-битную версию:

arch -64 python ~/anaconda3/envs/shape/bin/pyinstaller server.spec -s --osx-bundle-identifier com.ShapeRobotics.FableMac --distpath ../app/app --noconfirm"

Почему я уверен, что это сервер:

Мне удалось подписатьприложение и загрузка его в AppStore без сервера, упакованного.

После упаковки в сервер всплыла ошибка архитектуры 'i386'.

Следовательно, мои усилия до сих пор были сосредоточеныдля устранения любого куска 32-битного кода на сервере.

Я предполагаю, что для этого я должен правильно настроить файл .spec, используемый pyInstaller.

Имеет ли это смысл?

Есть ли способ настроить файл спецификаций для принудительного использования 64-битного монопольного режима для всего, что связано внутри?

Есть ли какой-то четкий способ заставить загрузку AppStore не вызывать ошибку 'i386'?

Спасибо!

...