问题标签 [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.
python - 脚本桥 vs PyObjC vs py2app
我刚刚开始学习如何集成 Python 和 Mac OS 应用程序。(我想调用一些从 Cocoa 到 Python 的方法。)我遇到过这些术语——Scripting Bridge、PyObjC 和 py2app。有什么不同?PyObjC 是脚本桥的一个例子吗?什么时候 py2app 开始发挥作用?
c++ - 构建 Mac 和 Windows GUI 应用程序
我计划为 Mac 和 Windows 构建一个 GUI 应用程序。我一直在对技术选择进行一些研究,例如语言、库和构建工具,以便我可以在两个平台之间共享尽可能多的代码。
主要要求是:
- 符合 Mac App Store 要求。
- Mac 和 Windows 上的原生外观。
- 需要在 Mac 上调用 Quartz Window Services,在 Windows 上调用 Windows API。
- 使用 SQLite 存储和读取数据。
我的帖子的长度已经失控,所以我把我的问题作为摘要移到了顶部,而上下文在下面。
问题
- 我倾向于使用 Python 来简化编程。这对我来说是正确的选择吗?如果不是,为什么 C++ 会更好?如果是这样,我该如何设置 py2app 和 pyobjc 来编译 python 并构建一个独立的应用程序来为 GUI 加载 XIBs?
- 为了更本机的界面,我不应该在 Mac 上使用跨平台 GUI 库,这对吗?还是使用 QT 或 wxWidgets 会更好?
- 如果我走错了路和/或有我没有考虑过的更好的解决方案,请指出:)
到目前为止我的研究和结论
图形用户界面库
对于 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。我对现有程序做了一些额外的研究,发现VLC、Chrome和Transmission都为 Mac 制作原生 GUI,而 VLC 使用 QT 用于 Windows,Chrome 使用自定义框架,Transmission 使用 GTK+ 和 QT 用于 Linux。
我想我已经决定使用 Cocoa GUI for Mac 和 Qt 或 wxWidgets for Windows,但仍然在 C++ 和 Python 之间进行共享逻辑。
py2app - 我如何知道使用 py2app 打包时要包含哪些模块?
我正在尝试打包我没有编写的开源应用程序的 Mac 版本(我不是一个编码员)。我正在使用 py2app 0.6.4。该应用程序在我的系统上正确构建,但我不确定在setup.py文件中列出什么内容。
依赖项包括 qt4、PyQt、matplotlib、cherrypy 和 sip。
当我查看这篇关于处理 PyQt 应用程序的文章时,我注意到依赖项并没有简单地列为PyQt,而是 *PyQt4._qt* 等。如何确定在应用程序代码的包含语句中插入什么?
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 需要包含的模块。我了解到QTranslator
QtCore 模块中有一个类,但包括PyQt4.QtCore
没有帮助,PyQt4*
.
代码中似乎导致这种情况的行是:
python - py2applet:找不到命令
我正在尝试使用 Py2App 创建一个 GUI Python 应用程序,但在运行设置脚本 py2applet 时遇到问题。
我已经通过 pip 安装了 py2app
然后,我尝试构建安装脚本:
我究竟做错了什么?
python - py2app gui错误
我有一个非常简单的 gui 应用程序:http: //pastebin.com/aVVTBJPd
这是用 Python 和 wxPython 编写的。它在我的 Mac 上运行良好。
我尝试运行 py2app。这是我的确切步骤:
然后,我进入我的 dist 目录,双击 gui.app,立即收到 gui 错误。
这是控制台中出现的内容:
我究竟做错了什么?
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)
老实说,仅基于此错误消息,我真的不明白如何在这里做我需要做的事情(我不是编码员;我只是在尽力打包软件)。
py2app - py2app-“包含”和“包”变量有什么区别?
我正在尝试使用 py2app 为 Mac OS X 打包一个 Linux 程序。我的 setup.py 看起来像这样:
但我意识到我也可以包含这样的模块:
我不是编码员,所以我真的不明白这里发生了什么。什么时候应该使用“includes”,什么时候应该使用“packages”?
xcode - 如何使用 XCode 4 构建使用 py2app 的应用程序?
最近我终于想出了如何使用 py2app打包 Python 应用程序( Mnemosyne )。这是跨平台软件,py2app 引入了很多依赖项——PyQt、cherrypy 等——所以重写不是一种选择。
但是,如果可能的话,我想将此应用程序提交到 App Store 或至少签署代码,以便下个月发布 Mountain Lion 时,用户可以在没有警告的情况下安装它。但是,当我启动 Xcode(我以前从未使用过)时,系统会提示我选择一个模板,但我不知道该选择什么。
我可以像这样轻松构建应用程序:
sudo python setup.py py2app
有人可以给我一个粗略的想法,以便能够在 Xcode 中构建它吗?
sqlite - Py2app 不包括 Sqlite 驱动程序-“数据库错误:未加载驱动程序未加载驱动程序”
我在py2app 邮件列表上的这篇文章中遇到了同样的问题。
我有一个使用 sqlite 数据库的 python 应用程序。在我安装了所有依赖项的机器上,没有问题。但是,当我将应用程序与 py2app 捆绑在一起时,单击导致访问数据库的菜单会导致此错误:
数据库错误:未加载驱动程序 未加载驱动程序
对于 Windows 安装程序, \Qt\version\plugins\sqldrivers\*.*
可以将其中的文件复制到\myApp\sqldrivers\*
Mac 上的相同文件可以在 /opt/local/share/qt4/plugins/sqldrivers
(通过 Macports 安装)中找到。
但是,将sqldrivers
目录复制到我的应用程序Resources
或Frameworks
目录仍然会导致相同的错误。
如何将 sqlite 支持添加到使用 py2app 构建的应用程序中?