問題タブ [python-embedding]
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 - Qt5にPythonを埋め込む
PythonインタープリターをQt5アプリケーションに組み込みたいと思います。
Qt 5で動作するアプリケーションがありますが、
上部(Qtヘッダーの下)で、コンパイルは次のように中断されます
PythonヘッダーをQtヘッダーの上に置くと、次のように壊れます。
どうか、なぜこれが起こるのか誰か知っていますか?QtとPythonがいくつかの一般的な単語を定義しているからかもしれませんか?私はそれについて何ができますか?
python - CオブジェクトをPythonリストに追加し、CオブジェクトのリストをPythonに返します
私はPython用のC拡張機能を書いています。
を使用してPythonリストにCオブジェクトを追加する方法を知りたいですPyList_SetItem
。例えば、
Cオブジェクトがあります。
私はリストを作りました:
次のステートメントの3番目の引数が何であるかわかりません。
また、このCオブジェクトのリストをPythonに返すにはどうすればよいですか。
c++ - C ++に埋め込まれたpython、pythonをインストールする必要がありますか
を使用して C++ アプリケーションに Python を埋め込む場合
およびリンク -lpython2.6
アプリケーションを操作するために、ターゲット コンピューター (最終的にコンパイルされたプログラムを実行するコンピューター) に python をインストールする必要がありますか?
ありがとう
c++ - Python埋め込み後の構造体への型キャスト
C++ プログラムに埋め込まれた小さな Python スクリプトがあります。Python オブジェクトを C++ プログラムに公開し、値を C++ 変数にコピーした後、それを構造体に型キャストしようとしましたが、期待値が得られません。] あるシステムから別のシステムにデータを送信するソケット プログラミングに Python を使用しています。
コードは次のようになります。
しかし、出力は割り当てられた値と同じではありません。誰が何が間違っているのか説明できますか?
前もって感謝します。
c++ - Python 埋め込みプロジェクトでの VC++ 6 の「未解決の外部」
Visual C++ 6 で奇妙なリンカー エラーが発生します (ツールを選択していません)。私はこれをどこから調べればよいかさえわかりません (私は C++ の経験が限られています)。エラーは次のとおりです。
これはCPythonPg.hです:
これはCSripting.hです: (私はこのクラスを作成していません。クラス CPythonPg にインスタンスを追加する以外は変更できません)
この種のエラーの原因は何ですか?
編集:いくつかのタイプミスを修正しました。
boost-python - Python をブーストし、名前空間で関数オブジェクトを呼び出す
ブースト python を使用して、C++ アプリケーションに python を埋め込んでいます。
ブースト python 関数オブジェクトを呼び出し、グローバル名前空間をその関数呼び出しに関連付けられるようにしたいと考えています。具体的には、簡略化された関連コードは次のとおりです。
上記のように、boost python exec() 関数を使用すると、グローバル名前空間で送信できることがわかっています。私の質問は、py_fn を呼び出すときに main_namespace を python 関数に関連付ける方法です。最終的な目標は、runPyProg のローカル変数を main_namespace に配置することです。
ありがとうございました。
python-c-api - 埋め込み時の Python 関数の動的引数タイプ
組み込みの Python インタープリターを Exim に追加しています。私は組み込み perl インターフェースをコピーしましたが、python は長い間コード化されてきた組み込み perl インタープリターと同じように動作することを期待しています。目標は、システム管理者が exim の標準 ACL コマンドを使用する代わりに、強力なスクリプト言語 (つまり python) で複雑な機能を実行できるようにすることです。これは、exim ACL 言語を使用して比較的単純なことを行うと非常に複雑になる可能性があるためです。
この記事の執筆時点での私の現在のコードはhttp://git.exim.org/users/tlyons/exim.git/blob/9b2c5e1427d3861a2154bba04ac9b1f2420908f7:/src/src/python.cにあります。システム管理者のカスタム python コードをインポートし、その中で関数を呼び出し、戻り値を処理できるという点で適切に機能しています (単純な戻り値の型のみ: int、float、または string)。ただし、python関数に渡される値はまだ処理されていません。これが私の質問の始まりです。
Python では、組み込みの Python 関数に渡す引数は、c API を使用して int、long、double、float、または string のいずれかに明示的にキャストする必要があるようです。問題は、システム管理者がその埋め込まれた python コードと exim の c 側に何でも入れることができることです。それらの変数の型が何であるかわかりません。Python は動的に型付けされることを知っているので、埋め込みコードに値を渡すときにそのコンプライアンスを維持したいと考えていました。しかし、私のテストではそのようには機能していません。
次の基本的な非常に単純な python コードを使用します。
...そして、exim ACL 言語からの呼び出しコードは次のとおりです。
以下の C コードでは、簡潔にするために参照カウントを省略しています。 countは、渡す引数の数です。
はい、**arg は文字列の配列 (この単純なケースでは 2 つの文字列) へのポインターです。問題は、2 つの値が python コードで文字列として扱われるため、その c コードが埋め込まれた python を実行した結果は次のようになることです。
Pythonを次のように変更すると:
次に、Python コードを実行したその C コードの結果は、期待どおりです。
私の目標は、python ユーザーに、埋め込まれた python 関数に渡すすべての数値パラメーターを手動でキャストすることを強制したくないということです。PyString_FromString() の代わりに PyDynamicType_FromString() があれば、私は有頂天になるでしょう。Exim の組み込み perl は引数を解析し、自動的にキャストを行います。組み込みの python からも同じことを期待していました。私が期待していた動的型付けを提供するために、Pythonがこの引数の解析を行うことができるかどうか、誰かが提案できますか?
または、その動的な型付けを維持したい場合、私の唯一のオプションは、各引数を解析し、それをキャストする型を推測することですか? 私は本当に本当に本当にそのアプローチを避けたいと思っていました. それに関しては、「渡されたすべてのパラメーターは文字列であるため、実際に数値を渡そうとしている場合は、すべてのパラメーターを int()、float()、double()、または long() でキャストする必要があります」と文書化するだけです。 . ただし、常にコンマが後にありますが、このアプローチは私の実装で強力な Python コーダーを苦しめると思います。それも避けたい。
「アプリを python モジュールにする」以外のすべての提案を歓迎します。
python - キーワード引数付きの PyObject_CallMethod
C アプリケーションに Python (2.7) ライブラリを埋め込もうとしていて、Python/C API を使用して C から Python コードを呼び出しています。キーワード引数を取る Python メソッドを呼び出す必要があります。意味的には、Python で次の行に相当するものを実現しようとしています。
ドキュメントを読むことで、私は次のようになりましたが、これはキーワード引数を渡しません:
私は Python にあまり詳しくありません。ドキュメントがこれについて完全に明確ではなく、Google 検索でもあまり有用な情報が得られなかったため、この時点でちょっと行き詰まっています。助けていただければ幸いです。