gpt4 book ai didi

python - 为什么 py2app .app 的启动时间比同一个 python 程序要长?

转载 作者:太空狗 更新时间:2023-10-30 03:04:49 24 4
gpt4 key购买 nike

我不确定我的问题/标题的措辞是否正确。我正在使用 OSX 10.6 和 python 2.7.1。我使用 setuptools 和 py2app 创建了一个 .app,我可以使用 open 从 finder 或终端运行它。

我的计划目标之一是快速启动。

当我进入构建文件夹并直接使用 python 运行 python 程序时,我的窗口会立即弹出。不到 1 秒。这是非常一致的。但是当我进入 dist 文件夹并运行 .app(从 finder 或打开)时,在窗口出现之前会有几秒钟的暂停。大约 4 到 5 秒,非常一致。

我想这可能与打开试图查找文档或其他东西有关,所以我尝试了这个:

open -a testrun.app ""

..果然,窗口立即弹出!

我需要在 setup.py 或某个地方做些什么来告诉它这不是一个面向文档的程序吗?

再详细一点-

我正在使用 Python 2.7.1(作为系统 python)开发 OSX 10.6.8。我已经尝试了一些细微的变化(2.6 使用 python_select,2.7.3 在 vi​​rtualenv 中..),但到目前为止,它没有任何区别。

我创建了一个简单的 .dylib(在 objective-c 中),它导出一个使用 cocoa 打开窗口的函数。我创建了一个非常简单的 python 扩展模块(在 c 中),其中有一个调用 .dylib 函数的函数。

(我的计划是用一种平台语言为 gui 调用和相关的平台特定调用创建一个平台特定的共享/动态库,以及一个使用它的跨平台 c 库,然后创建高级语言扩展模块使 c 库可用于这些语言。)

我写了一个非常简单的调用c函数的python程序。我写了一个 setup.py 构建一切并使用 py2app 创建一个 .app。

这是 .dylib 的构建脚本:

gcc -framework Cocoa -dynamiclib -x objective-c testlib.objc -current_version 1.0 -compatibility_version 1.0 -o libTestlib.1.dylib -arch i386 -arch x86_64

这是 setup.py:

from setuptools import setup, Extension

APP = ['testrun.py']
DATA_FILES = []
OPTIONS = {
'argv_emulation': True,
'frameworks': ['/Users/shavais/scratch/objc/libTestlib.1.dylib']
}

module1 = Extension(
'demo',
sources = ['demo.c'],
libraries = ['Testlib.1'],
library_file_directories = ['/Users/shavais/scratch/objc']
)

setup(
name = 'testrun',
description = 'This is a testrun package',
app = APP,
data_files = DATA_FILES,
options = {'py2app': OPTIONS},
setup_requires = ['py2app'],
version = '1.0',
py_modules = ['testrun'],
ext_modules = [module1]
)

最佳答案

我不知道 Mac 上的 py2app(从未使用过),但它的工作方式是否类似于 http://www.pyinstaller.org/ ,然后二进制文件必须将 python 运行时、你的程序和所有模块解压到内存中。这需要时间。

关于python - 为什么 py2app .app 的启动时间比同一个 python 程序要长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14386421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com