我有一个 Python3.6 应用程序,我可以通过python setup.py bdist_dmg. 如果我在build本地运行文件夹中创建的可执行文件,它就可以工作。我希望能够将此包分发给其他 Mac 用户,但是当我将该build文件夹发送到另一个 Mac 实例并运行可执行文件时,出现以下错误:
dyld: Library not loaded:
/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/Python
Referenced from: /Users/admin/Desktop/build/exe.macosx-10.12-x86_64-
3.6/run
Reason: image not found
Abort trap: 6
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
[Process completed]
Run Code Online (Sandbox Code Playgroud)
我认为 cx_freeze 将使 Python 版本可访问。该build目录包含我的应用程序的 .dmg 和 .app 文件,以及这个 exe.macosx-10.12-x86_64-3.6 文件夹,其中包含我要运行的可执行文件、Python 可执行文件以及与我的项目相关的其他一些文件。如果我尝试运行 .app 或 .dmg,则没有任何反应(在我的机器上或另一台机器上)。非常感谢有关如何解决上述问题或将我的应用程序转换为可分发 OSX 包的其他方法的任何帮助。
我正在使用在这里找到的 QtWaitingSpinner: https: //github.com/snowwlex/QtWaitingSpinner。您可以像这样创建并启动微调器spinner = QtWaitingSpinner(self); spinner.start():不幸的是,当我尝试从 GUI 发出 POST 请求时,旋转器会停止,直到返回响应为止。因此,我根本看不到旋转器,或者如果我过早启动旋转器,它会在等待响应时停止旋转。我想我必须使用某种异步方法,如 QThread 或 asyncio,但目前还不清楚解决这个问题的最佳方法是什么。如果有人能告诉我最好的处理方法,我将不胜感激。这是我正在做的事情的简化版本:
class Obj(QDialog):
# some button calls this function when pressed
def submit(self):
#start spinner
spinner = QtWaitingSpinner(self)
spinner.start()
# post some data to some url, spinner should spin
r = requests.post('some_url.com', json=some_data)
# stop spinner
spinner.stop()
Run Code Online (Sandbox Code Playgroud)