问题标签 [py2app]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1231 浏览

python - 脚本桥 vs PyObjC vs py2app

我刚刚开始学习如何集成 Python 和 Mac OS 应用程序。(我想调用一些从 Cocoa 到 Python 的方法。)我遇到过这些术语——Scripting Bridge、PyObjC 和 py2app。有什么不同?PyObjC 是脚本桥的一个例子吗?什么时候 py2app 开始发挥作用?

0 投票
2 回答
10589 浏览

c++ - 构建 Mac 和 Windows GUI 应用程序

我计划为 Mac 和 Windows 构建一个 GUI 应用程序。我一直在对技术选择进行一些研究,例如语言、库和构建工具,以便我可以在两个平台之间共享尽可能多的代码。

主要要求是:

  1. 符合 Mac App Store 要求。
  2. Mac 和 Windows 上的原生外观。
  3. 需要在 Mac 上调用 Quartz Window Services,在 Windows 上调用 Windows API。
  4. 使用 SQLite 存储和读取数据。

我的帖子的长度已经失控,所以我把我的问题作为摘要移到了顶部,而上下文在下面。

问题

  1. 我倾向于使用 Python 来简化编程。这对我来说是正确的选择吗?如果不是,为什么 C++ 会更好?如果是这样,我该如何设置 py2app 和 pyobjc 来编译 python 并构建一个独立的应用程序来为 GUI 加载 XIBs?
  2. 为了更本机的界面,我不应该在 Mac 上使用跨平台 GUI 库,这对吗?还是使用 QT 或 wxWidgets 会更好?
  3. 如果我走错了路和/或有我没有考虑过的更好的解决方案,请指出:)

到目前为止我的研究和结论

图形用户界面库

对于 Mac,我排除了使用跨平台 GUI 库(如 QT),因为它们似乎无法在 Mac 上提供原生外观和感觉(看起来不合适和/或难以编写遵循 Apple 的应用程序)人机界面指南)。wxWidgets 说它使用原生库,但这篇文章提到 wxPython 可能使用私有的 Objective-C 调用,并且不太可能被 Mac App Store 批准。最后,即使外观正确,两个平台的布局可能仍然需要有所不同。

因此,我计划为 Mac 界面使用本机 Cocoa GUI 库,但仍在考虑将 wxWidgets 用于 Windows GUI。

语言

对于主要应用程序逻辑的语言,我的最佳选择似乎是 C++ 或 Python。显然,用 Python 编写跨平台代码比 C++ 容易得多,但总要权衡取舍。

Python

优点:编写速度更快,维护更容易。强大的跨平台库,可以大大缩短开发时间。

缺点:使用 Python 意味着使用 PyObjC,它已经有一年多没有更新了(从 svn 可以看出),我不清楚它是否仍然适用于未来版本的 Xcode 和 OSX。此外,在 Xcode 之外使用 PyObjc 和 py2app 设置任何健全的构建配置并使用 xibs 进行 GUI 是一场噩梦。

C++

优点:更容易在 Mac 和 Windows 上设置构建配置和依赖项。运行速度比 Python 快得多,尽管在我的情况下性能并不是一个大问题。

缺点:我不懂 C++。我很擅长 C,但看起来这对我编写好的 C++ 没有多大帮助。我的总体印象是编写跨平台 C++ 要困难得多,但我可能错了。有很多关于模糊错误的帖子。不过,Boost 看起来很有希望。

构建工具

如果使用 C++ 作为主要语言,在这两个平台上进行设置似乎都很简单。如果我使用 Python,在 Windows 上设置似乎也很简单,因为我会使用 wxWidgets 作为 GUI 和 py2exe 进行部署。

至于 Mac 和 Python,标准的选择似乎是 pyobjc 和 py2app。不幸的是,我没有找到任何使用 py2app 构建配置的示例,它使用 XIB 和 Cocoa 库而不是 QT 或 wxWidgets。我不希望 Xcode 管理构建,因为我希望将 Python 文件和应用程序资源放在 Xcode 项目目录之外。这将大大简化 Windows 的设置并使文件树更清晰。

关于 QT 的编辑:我又看了一眼 QT,花了几个小时和 QT 设计师一起玩。基本的 UI 元素(按钮、文本字段、标签)看起来与 Cocoa 元素相同。我用一些元素轻松地将 QWindow 和 QTabView 组合在一起,它看起来像一个 Cocoa 应用程序。但是,有一些负面影响:

  • 行为有点偏离,比如缺乏弹性滚动,QTextEdit 没有表示焦点的蓝色阴影。
  • QTableView 看起来不太像它的 Cocoa 对应物。
  • 元素之间的间距,与父视图的间距,不遵循准则。它主要可以通过调整布局来修复,但需要在任何地方完成,我会通过 Xcode 免费获得它。
  • 缺少用于制作检查器的 HUD 元素。这是我很可能在我的应用程序中需要的东西,至少在 Mac 端是这样。
  • 可访问性支持差。

我知道我很挑剔,但需要挑剔才能做出好的 UI。总体而言,QT 似乎是 Windows 的一个很好的解决方案,但我认为我会坚持使用 Cocoa for Mac。我对现有程序做了一些额外的研究,发现VLCChromeTransmission都为 Mac 制作原生 GUI,而 VLC 使用 QT 用于 Windows,Chrome 使用自定义框架,Transmission 使用 GTK+ 和 QT 用于 Linux。

我想我已经决定使用 Cocoa GUI for Mac 和 Qt 或 wxWidgets for Windows,但仍然在 C++ 和 Python 之间进行共享逻辑。

0 投票
1 回答
431 浏览

py2app - 我如何知道使用 py2app 打包时要包含哪些模块?

我正在尝试打包我没有编写的开源应用程序的 Mac 版本(我不是一个编码员)。我正在使用 py2app 0.6.4。该应用程序在我的系统上正确构建,但我不确定在setup.py文件中列出什么内容。

依赖项包括 qt4、PyQt、matplotlib、cherrypy 和 sip。

当我查看这篇关于处理 PyQt 应用程序的文章时,我注意到依赖项并没有简单地列为PyQt,而是 *PyQt4._qt* 等。如何确定在应用程序代码的包含语句中插入什么?

0 投票
1 回答
309 浏览

python - ImportError:没有名为 pyqt_ui.qt_translator 的模块

我正在尝试使用 py2app 打包 python 应用程序(Mnemosyne)(我没有编写软件;我只是在尝试打包它)。

我已经用 py2app 构建了应用程序: sudo python setup.py py2app

并将 qt_menu.nib 目录复制到 Resources 目录中。

然后当我尝试启动应用程序时: ./dist/Mnemosyne.app/Contents/MacOS/Mnemosyne

我收到此错误:

ImportError:没有名为 pyqt_ui.qt_translator 的模块

我无法弄清楚要添加到“包含”中以确保包含 qt_translator。

我阅读了PyQT 模块列表,但找不到获取 qt_translator 需要包含的模块。我了解到QTranslatorQtCore 模块中有一个类,但包括PyQt4.QtCore没有帮助,PyQt4*.

代码中似乎导致这种情况的行是:

0 投票
5 回答
6124 浏览

python - py2applet:找不到命令

我正在尝试使用 Py2App 创建一个 GUI Python 应用程序,但在运行设置脚本 py2applet 时遇到问题。

我已经通过 pip 安装了 py2app

然后,我尝试构建安装脚本:

我究竟做错了什么?

0 投票
0 回答
685 浏览

python - py2app gui错误

我有一个非常简单的 gui 应用程序:http: //pastebin.com/aVVTBJPd

这是用 Python 和 wxPython 编写的。它在我的 Mac 上运行良好。

我尝试运行 py2app。这是我的确切步骤:

然后,我进入我的 dist 目录,双击 gui.app,立即收到 gui 错误。

在此处输入图像描述

这是控制台中出现的内容:

在此处输入图像描述

我究竟做错了什么?

0 投票
1 回答
1271 浏览

pyqt - ABC 类在 Py2app 应用程序和系统库中都实现了。将使用两者之一

我正在尝试通过 Py2app 在 Mac OS Lion 上打包使用 PyQt 的应用程序Mnemosyne 。

我收到如下几个错误:

  • objc[2826]:类 QCocoaView 在 /Volumes/Bullfrog/patrick/m2/./dist/Mnemosyne.app/Contents/MacOS/../Frameworks/libQtGui.4.dylib 和 /opt/local/lib/ 中都实现了libQtGui.4.dylib。将使用两者之一。哪一个是未定义的。
  • objc[2826]:类 QCocoaWindow 在 /Volumes/Bullfrog/patrick/m2/./dist/Mnemosyne.app/Contents/MacOS/../Frameworks/libQtGui.4.dylib 和 /opt/local/lib/ 中都实现了libQtGui.4.dylib。将使用两者之一。哪一个是未定义的。

该类的第一个版本是在 Py2App 中使用的,也是应该使用的(我试图使应用程序独立)。第二个是我通过 MacPorts 安装的系统 Qt。我必须向应用程序添加什么以使其使用捆绑的 Qt 而不是系统 Qt?

还有几个这样的陈述:

在 Mac OS X 上,您可能会将两组 Qt 二进制文件加载到同一个进程中。检查所有插件是否针对正确的 Qt 二进制文件进行编译。导出 DYLD_PRINT_LIBRARIES=1 并检查是否只加载了一组二进制文件。QObject::moveToThread: 当前线程 (0x10246c880) 不是对象的线程 (0x106985d00)。无法移动到目标线程 (0x10246c880)

老实说,仅基于此错误消息,我真的不明白如何在这里做我需要做的事情(我不是编码员;我只是在尽力打包软件)。

0 投票
2 回答
4833 浏览

py2app - py2app-“包含”和“包”变量有什么区别?

我正在尝试使用 py2app 为 Mac OS X 打包一个 Linux 程序。我的 setup.py 看起来像这样:

但我意识到我也可以包含这样的模块:

我不是编码员,所以我真的不明白这里发生了什么。什么时候应该使用“includes”,什么时候应该使用“packages”?

0 投票
2 回答
366 浏览

xcode - 如何使用 XCode 4 构建使用 py2app 的应用程序?

最近我终于想出了如何使用 py2app打包 Python 应用程序( Mnemosyne )。这是跨平台软件,py2app 引入了很多依赖项——PyQt、cherrypy 等——所以重写不是一种选择。

但是,如果可能的话,我想将此应用程序提交到 App Store 或至少签署代码,以便下个月发布 Mountain Lion 时,用户可以在没有警告的情况下安装它。但是,当我启动 Xcode(我以前从未使用过)时,系统会提示我选择一个模板,但我不知道该选择什么。

我可以像这样轻松构建应用程序:

sudo python setup.py py2app

有人可以给我一个粗略的想法,以便能够在 Xcode 中构建它吗?

0 投票
3 回答
592 浏览

sqlite - Py2app 不包括 Sqlite 驱动程序-“数据库错误:未加载驱动程序未加载驱动程序”

我在py2app 邮件列表上的这篇文章中遇到了同样的问题。

我有一个使用 sqlite 数据库的 python 应用程序。在我安装了所有依赖项的机器上,没有问题。但是,当我将应用程序与 py2app 捆绑在一起时,单击导致访问数据库的菜单会导致此错误:

数据库错误:未加载驱动程序 未加载驱动程序

对于 Windows 安装程序, \Qt\version\plugins\sqldrivers\*.*可以将其中的文件复制到\myApp\sqldrivers\*

Mac 上的相同文件可以在 /opt/local/share/qt4/plugins/sqldrivers(通过 Macports 安装)中找到。

但是,将sqldrivers目录复制到我的应用程序ResourcesFrameworks目录仍然会导致相同的错误。

如何将 sqlite 支持添加到使用 py2app 构建的应用程序中?