問題タブ [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 アプリケーションを作成する予定です。2 つのプラットフォーム間でできるだけ多くのコードを共有できるように、言語、ライブラリ、ビルド ツールなどのテクノロジの選択について調査を行ってきました。

主な要件は次のとおりです。

  1. Mac App Store の要件を満たしています。
  2. Mac と Windows の両方でネイティブなルック アンド フィール。
  3. Mac では Quartz Window Services を、Windows では Windows API を呼び出す必要があります。
  4. SQLite を使用してデータを保存および読み取ります。

投稿の長さが制御不能になったので、質問を要約として一番上に移動し、コンテキストはさらに下に移動しました。

質問

  1. 私は、プログラミングを容易にするために Python を使用することに傾いています。これは私にとって正しい選択ですか?そうでない場合、なぜC++の方が優れているのでしょうか? もしそうなら、py2app と pyobjc をセットアップして Python をコンパイルし、GUI 用に XIB をロードするスタンドアロン アプリをビルドするにはどうすればよいですか?
  2. よりネイティブなインターフェイスのために、Mac でクロスプラットフォームの GUI ライブラリを使用すべきではないというのは正しいですか? それとも、QT や wxWidgets を使用したほうがよいのでしょうか?
  3. 私が間違った道を進んでいる場合、および/または私が検討していないより良い解決策がある場合は、それらを指摘してください:)

これまでの私の研究と結論

GUI ライブラリ

Mac の場合、クロスプラットフォームの GUI ライブラリ (QT など) の使用を除外しました。Mac でネイティブのルック アンド フィールを提供できないように思われるからです (場違いに見えたり、Apple のヒューマン インターフェイス ガイドライン)。wxWidgets はネイティブ ライブラリを使用すると述べていますが、この投稿では、wxPython がプライベートな Objective-C 呼び出しを使用する可能性があり、Mac App Store で承認される可能性は低いと述べています。最後に、見た目が正しいとしても、2 つのプラットフォームでレイアウトを変える必要があるでしょう。

したがって、Windows GUI に wxWidgets を使用することをまだ検討していますが、Mac インターフェイスにはネイティブの Cocoa GUI ライブラリを使用する予定です。

言語

メイン アプリケーション ロジックの言語として、C++ または Python のいずれかを選択するのが最善のようです。C++ より Python でクロスプラットフォーム コードを書く方が明らかに簡単ですが、常にトレードオフがあります。

パイソン

長所:記述がはるかに速く、保守が容易です。開発時間を大幅に短縮できる堅牢なクロスプラットフォーム ライブラリ。

短所: Python を使用するということは、(svn からわかるように) 1 年以上更新されていない PyObjC を使用することを意味し、Xcode および OSX の将来のバージョンで引き続き機能するかどうかは不明です。また、PyObjc と py2app を使用して適切なビルド構成をセットアップし、Xcode の外部で GUI に xib を使用することは悪夢です。

C++

長所: Mac と Windows の両方でビルド構成と依存関係を簡単に設定できます。私の場合、パフォーマンスは大きな問題ではありませんが、Python よりもはるかに高速に実行されます。

短所:私は C++ を知りません。私は C がかなり得意ですが、それが優れた C++ を作成するのに役立つとは思えません。クロスプラットフォームの C++ を書くのはずっと難しいという一般的な印象を持っていますが、それは間違っているかもしれません。あいまいなバグに関する投稿がたくさんあります。ブーストは有望に見えますが。

ビルドツール

メイン言語として C++ を使用する場合の設定は、両方のプラットフォームで十分に簡単に思えます。Python を使用する場合、GUI に wxWidgets を使用し、デプロイに py2exe を使用するため、Windows でのセットアップも簡単に思えます。

Mac と Python に関しては、標準的な選択は pyobjc と py2app のようです。残念ながら、QT や wxWidgets ではなく XIB と Cocoa ライブラリを使用する py2app のビルド構成の例は見つかりませんでした。PythonファイルとアプリケーションリソースをXcodeプロジェクトディレクトリの外に配置したいので、Xcodeでビルドを管理したくありません。これにより、Windows のセットアップが大幅に簡素化され、ファイル ツリーがすっきりします。

QTに関する編集: QTデザイナーで数時間遊んで、QTをもう一度見てみました。基本的な UI 要素 (ボタン、テキストフィールド、ラベル) は、Cocoa 要素と同じように見えます。QWindow と QTabView をいくつかの要素で簡単にまとめると、Cocoa アプリのように見えます。ただし、いくつかのマイナス点がありました。

  • 弾性スクロールがないなど、動作が少しずれています。QTextEdit には、フォーカスを示す青い影がありません。
  • QTableView は、対応する Cocoa とあまり似ていません。
  • 要素間の間隔、親ビューまでの間隔は、ガイドラインに従っていません。ほとんどの場合、レイアウトを微調整することで修正できますが、どこでも行う必要があり、Xcode で無料で入手できます。
  • インスペクタを作成するための HUD 要素がありません。これは、少なくとも Mac 側では、私のアプリで必要になる可能性が非常に高いものです。
  • アクセシビリティのサポートが不十分。

私はうるさいことを知っていますが、良いUIを作るにはうるさい必要があります. 全体的に QT は Windows 向けの優れたソリューションのようですが、私は Mac 向けの Cocoa に固執すると思います。既存のプログラムについてさらに調査を行ったところ、VLCChrome、およびTransmissionはすべて Mac 用のネイティブ GUI を作成し、VLC は Windows 用の QT を使用し、Chrome はカスタム フレームワークを使用し、Transmission は Linux 用の GTK+ および QT を使用することがわかりました。

Mac 用の Cocoa GUI と Windows 用の Qt または wxWidgets を使用することに決めたと思いますが、共有ロジックのために C++ と Python に分割されています。

0 投票する
1 に答える
431 参照

py2app - py2app でパッケージ化するときにどのモジュールを含めるかを知るにはどうすればよいですか?

私が書いていないオープン ソース アプリケーションの Mac バージョンをパッケージ化しようとしています (私はあまりコーダーではありません)。私はpy2app 0.6.4を使用しています。アプリケーションはシステム上で適切にビルドされますが、setup.pyファイルのインクルード何をリストすればよいかわかりません。

依存関係には、qt4、PyQt、matplotlib、cherrypy、および sip が含まれます。

PyQt アプリケーションの処理に関するこの記事を見たとき、依存関係が単にPyQtとしてリストされているのではなく、*PyQt4._qt* などとしてリストされていることに気付きました。アプリケーションのコードからincludesステートメントに挿入するものをどのように決定できますか?

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が確実に含まれるようにするために、「includes」に何を追加するかを理解できませんでした。

PyQTモジュールのリストを読みましたが、qt_translatorを取得するために含める必要のあるモジュールが見つかりませんでした。QTranslatorQtCoreモジュールにクラスがあることを学びましたが、インクルードPyQt4.QtCoreしても役に立ちませんPyQt4*

これを引き起こしていると思われるコードの行は次のとおりです。

0 投票する
5 に答える
6124 参照

python - py2applet:コマンドが見つかりません

Py2Appを使用してGUIPythonアプリを作成しようとしていますが、セットアップスクリプト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 アプリとシステム ライブラリの両方に実装されています。2つのうちの1つが使用されます

PyQt を使用するアプリケーションであるMnemosyneを Py2app 経由で Mac OS Lionにパッケージ化しようとしています。

次のようないくつかのエラーが発生します。

  • objc[2826]: クラス QCocoaView は /Volumes/Bullfrog/patrick/m2/./dist/Mnemosyne.app/Contents/MacOS/../Frameworks/libQtGui.4.dylib と /opt/local/lib/ の両方に実装されていますlibQtGui.4.dylib。2つのうちの1つが使用されます。どれが未定義です。
  • objc[2826]: クラス QCocoaWindow は /Volumes/Bullfrog/patrick/m2/./dist/Mnemosyne.app/Contents/MacOS/../Frameworks/libQtGui.4.dylib と /opt/local/lib/ の両方に実装されていますlibQtGui.4.dylib。2つのうちの1つが使用されます。どれが未定義です。

クラスの最初のバージョンは Py2App で使用されるものであり、使用する必要があるものです (アプリをスタンドアロンにしようとしています)。2 つ目は、MacPorts 経由でインストールしたシステム Qt です。システム Qt ではなくバンドルされた Qt を使用するには、アプリケーションに何を追加する必要がありますか?

また、次のようなステートメントもいくつかあります。

Mac OS X では、2 セットの Qt バイナリを同じプロセスにロードする場合があります。すべてのプラグインが正しい Qt バイナリに対してコンパイルされていることを確認します。DYLD_PRINT_LIBRARIES=1 をエクスポートし、1 セットのバイナリのみがロードされていることを確認します。QObject::moveToThread: 現在のスレッド (0x10246c880) はオブジェクトのスレッド (0x106985d00) ではありません。ターゲット スレッドに移動できません (0x10246c880)

正直なところ、このエラー メッセージに基づいて、ここで行う必要があることを行う方法がよくわかりません (私はコーダーではありません。ソフトウェアをパッケージ化するために最善を尽くしているだけです)。

0 投票する
2 に答える
4833 参照

py2app - py2app-「includes」変数と「packages」変数の違いは何ですか?

py2app を使用して Mac OS X 用の Linux プログラムをパッケージ化しようとしています。私の setup.py は次のようになります。

しかし、次のようなモジュールを含めることもできることに気付きました。

私はコーダーではないので、ここで何が起こっているのかよくわかりません。「インクルード」と「パッケージ」はいつ使用する必要がありますか?

0 投票する
2 に答える
366 参照

xcode - XCode 4 を使用して py2app を使用するアプリケーションを構築するにはどうすればよいですか?

最近、ようやくpy2app を使用して Python アプリ ( Mnemosyne ) をパッケージ化する方法を見つけました。これはクロスプラットフォーム ソフトウェアであり、py2app は多くの依存関係 (PyQt、cherrypy など) を取り込むため、書き直すことはできません。

ただし、可能であれば、このアプリケーションを App Store に提出するか、少なくともコードに署名して、Mountain Lion が来月リリースされたときに、ユーザーが警告なしでインストールできるようにしたいと考えています。しかし、Xcode を起動すると (これまで使用したことがありません)、テンプレートを選択するように求められますが、何を選択すればよいかわかりません。

次のようにアプリケーションを簡単に構築できます。

須藤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ただし、ディレクトリをアプリケーションResourcesまたはディレクトリにコピーしてFrameworksも、同じエラーが発生します。

py2appを使用して構築されたアプリケーションにsqliteサポートを追加するにはどうすればよいですか?