簡體   English   中英

使用 pyinstaller 和 python3 為 mac os 創建通用構建

[英]Creating universal build for mac os with pyinstaller and python3

我有兩台mac機器。 一個基於英特爾並運行 big sur,第二個是 M1 並運行 big sur。 我正在嘗試使用 pyinstaller 和 universal2 選項構建示例 hello world package。 package 在英特爾機器上工作正常但是當我在 M1 機器上復制 package 時它拋出以下錯誤

marwa@admins-Mac-mini test_app % ls
build           dist            test.py         test.spec
marwa@admins-Mac-mini test_app % cd dist
marwa@admins-Mac-mini dist % ls
test            test.app
marwa@admins-Mac-mini dist % cd test
marwa@admins-Mac-mini test % ls
Python                  libbz2.1.0.dylib        libexpat.1.dylib        libintl.8.dylib         libssl.3.dylib
base_library.zip        libcrypto.3.dylib       libffi.8.dylib          liblzma.5.dylib         libz.1.dylib
lib-dynload             libedit.0.dylib         libiconv.2.dylib        libncurses.6.dylib      test
marwa@admins-Mac-mini test % ./test
[29040] Module object for struct is NULL!
Traceback (most recent call last):
  File "struct.py", line 13, in <module>
ImportError: dynamic module does not define module export function (PyInit__struct)
[29040] Module object for pyimod02_archive is NULL!
Traceback (most recent call last):
  File "PyInstaller/loader/pyimod02_archive.py", line 27, in <module>
ModuleNotFoundError: No module named 'struct'
[29040] Module object for pyimod03_importers is NULL!
Traceback (most recent call last):
  File "PyInstaller/loader/pyimod03_importers.py", line 23, in <module>
ModuleNotFoundError: No module named 'pyimod02_archive'
Traceback (most recent call last):
  File "PyInstaller/loader/pyiboot01_bootstrap.py", line 17, in <module>
ModuleNotFoundError: No module named 'pyimod03_importers'
[29040] Failed to execute script 'pyiboot01_bootstrap' due to unhandled exception: No module named 'pyimod03_importers'
[29040] Traceback:

使用以下命令編譯我的代碼

cloudqa@MACBOOKAIR01 test_app % /opt/local/bin/python3.9 /opt/local/Library/Frameworks/Python.framework/Versions/3.9/bin/pyinstaller   --target-architecture universal2 test.py


cloudqa@MACBOOKAIR01 test_app % lipo -archs /opt/local/bin/python3.9
x86_64 arm64
cloudqa@MACBOOKAIR01 test_app %

如果我輸入 go 並檢查 dist 文件夾中二進制文件的架構,我可以在下面看到

cloudqa@MACBOOKAIR01 test % ls
Python                  libbz2.1.0.dylib        libexpat.1.dylib        libintl.8.dylib         libssl.3.dylib
base_library.zip        libcrypto.3.dylib       libffi.8.dylib          liblzma.5.dylib         libz.1.dylib
lib-dynload             libedit.0.dylib         libiconv.2.dylib        libncurses.6.dylib      test
cloudqa@MACBOOKAIR01 test % lipo -archs test
x86_64 arm64
cloudqa@MACBOOKAIR01 test %

似乎早期可能存在導入/路徑問題,從那里級聯以下錯誤。 不看 struct.py 中的代碼就很難分辨。 只是通過 ImportError 缺少或未正確設置的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM