【问题标题】:Py2App>0.13 always outputs ValueError/ Py2App v0.13 App not opening on second machinePy2App>0.13 总是输出 ValueError/ Py2App v0.13 App not opening on second machine
【发布时间】:2020-08-26 08:22:45
【问题描述】:

所以我终于让我的 python 程序在我的 Mac (Catalina 10.15.4) 上运行,但是在另一台 Mac (High Sierra 10.13.6) 上打开它时出现以下错误。

Could not import the PyAudio C module '_portaudio'.
Traceback (most recent call last):
  File "/Volumes/dist/Riff Gen.app/Contents/Resources/__boot__.py", line 355, in <module>
    _run()
  File "/Volumes/dist/Riff Gen.app/Contents/Resources/__boot__.py", line 340, in _run
    exec(compile(source, path, 'exec'), globals(), globals())
  File "/Volumes/dist/Riff Gen.app/Contents/Resources/riffgen_v1.01.py", line 9, in <module>
    from pysine import sine
  File "pysine/__init__.pyc", line 14, in <module>
  File "pysine/pysine.pyc", line 1, in <module>
  File "pyaudio.pyc", line 116, in <module>
ImportError: dlopen(/Volumes/dist/Riff Gen.app/Contents/Resources/lib/python3.6/lib-dynload/_portaudio.so, 2): Symbol not found: ____chkstk_darwin
  Referenced from: /Volumes/dist/Riff Gen.app/Contents/MacOS/../Frameworks/libportaudio.2.dylib (which was built for Mac OS X 10.15)
  Expected in: /usr/lib/libSystem.B.dylib
 in /Volumes/dist/Riff Gen.app/Contents/MacOS/../Frameworks/libportaudio.2.dylib

一个带有各种声音和图像的简单 tkinter 测试在第二台机器上运行良好,但不是这个脚本。我尝试过手动添加所有包,尝试过 --nostrip,手动包括“libportaudio.2.dylib”,以及来自无数过时论坛的许多其他想法,但无济于事。

当我的应用程序的播放功能被剥离后,应用程序随即打开并崩溃 - 出现以下错误:

Traceback (most recent call last):
  File "/Volumes/RG no audio/Riff Gen.app/Contents/Resources/__boot__.py", line 81, in <module>
    _run()
  File "/Volumes/RG no audio/Riff Gen.app/Contents/Resources/__boot__.py", line 66, in _run
    exec(compile(source, path, 'exec'), globals(), globals())
  File "/Volumes/RG no audio/Riff Gen.app/Contents/Resources/riffgen_v1.01.py", line 2037, in <module>
    root.mainloop()
  File "tkinter/__init__.pyc", line 1277, in mainloop
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Fatal Python error: PyEval_RestoreThread: NULL tstate
Current thread 0x00007fffa118e380 (most recent call first):
Abort trap: 6
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Deleting expired sessions...none found.
[Process completed]

我一直在使用 Python 3.6 和 Py2App v0.13,因为不幸的是,它是唯一一个成功地将我的程序打包到独立包中的版本。即使在别名模式下捆绑时,任何高于 0.13 的版本都会给我以下错误:

Traceback (most recent call last):
  File "/Users/Alex/Desktop/python_scripts/rhythm_generator/riffgen/dist/Riff Gen.app/Contents/Resources/__boot__.py", line 420, in <module>
    _run()
  File "/Users/Alex/Desktop/python_scripts/rhythm_generator/riffgen/dist/Riff Gen.app/Contents/Resources/__boot__.py", line 414, in _run
    exec(compile(source, script, 'exec'), globals(), globals())
  File "/Users/Alex/Desktop/python_scripts/rhythm_generator/riffgen/riffgen_v1.01.py", line 7, in <module>
    from tkinter import *
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 36, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ValueError: character U+6573552f is not in range [U+0000; U+10ffff]

我见过少数人遇到与上述类似的错误,但我见过的少数解决方案都没有成功。

我假设这两个错误都有一个简单的解决方案,但是经过长达两周的修修补补,我已经没有想法了。我刚开始编程,真的想继续部署 GUI 程序,所以我迫切希望得到这个功能。任何帮助都非常感谢

【问题讨论】:

    标签: python python-3.x macos tkinter py2app


    【解决方案1】:

    可能不是您希望的答案,但这可能会给您一些想法:

    • 检查您是否没有安装多个 python。确保使用 3.6 运行它。 (但您可能已经这样做了)
    • 在 python shell 中检查两台 PC help('modules') 上安装的模块。
    • 检查是否安装了正确版本的模块。安装完全相同的版本pip install SomePackage==1.0.4
    • Symbol not found: ____chkstk_darwin 似乎是一个与 mac 相关的问题。我会结合您在脚本中使用的模块开始在那里搜索。这是我在 stackoverflow 上找到的唯一一篇文章,它建议查看 PATH 设置; plaidml-setup uses the wrong lib path and gets OSErrors

    【讨论】:

    • 我有两个版本,但是打包的时候指定了python3。而且我想我对您关于每台计算机上的模块的建议感到困惑,因为我的目标是拥有一个独立的.app,它可以在没有安装 python 的机器上打开(就像我朋友正在测试我的程序的第二台计算机一样)。我确实尝试了该链接,但老实说,我无法选择我理解的许多有用信息。
    • 我更关心的是,一旦播放功能被剥离,一切都正常运行,但一分钟后它仍然崩溃,因为这让我认为我的代码存在根本性的问题。我在想Symbol not found: ____chkstk_darwin 可能是 v0.13 特有的错误,所以我可能会更幸运地首先针对第三个错误,然后如果它仍然存在则针对第二个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多