問題タブ [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 - アプリケーションのスクリプトのニーズに合わせた最小限のPythonビルド?
私のアプリケーションのスクリプトのニーズに合わせてPython(2.x)の非常にミニマルなバージョンを構築するためのアドバイスは何ですか。
ここでの私の主な動機は、フットプリント(メモリとディスクの両方)をできるだけ低くして、ネイティブアプリケーションがパフォーマンスに大きな影響を与えないようにすることです。アプリケーションの起動時間が長くなる可能性があるため、PythonDLLのサイズも考慮されています。
Luaや他の軽量ソリューションと同じくらい低くすることはできますか?
c++ - C++ クラスとしての Python インタープリター
私はpythonをc ++に埋め込むことに取り組んでいます。いくつかの特殊なケースでは、同じスレッドでインタープリターの 2 つの別個のインスタンスが必要です。
Python インタープリターを C++ クラスにラップして、2 つ以上のクラス インスタンスからサービスを取得できますか?
python - osxのmatlabmexファイルにPythonを埋め込みます
PythonをOSXのMATLABmex関数に埋め込もうとしています。これを実行できるという参照を確認しましたが(ここなど)、OSX固有の情報が見つかりません。これまでのところ、組み込みPythonを正常にビルドでき(リンカーフラグはOKである必要があります)、問題なくデフォルトオプションを使用してサンプルmexファイルをビルドすることもできます。
しかし、Pythonを埋め込んだmexファイルを作成しようとすると、未定義のシンボルmainで問題が発生します。これが私のmex関数です:
mexのコンパイル手順は次のとおりです。
arch設定(すべてを32ビットに保つために-arch i386を追加しました-python.org32ビット2.5ビルドを使用しています)とリンカーフラグの順序を試してみましたが、できませんでしたどこにでも行くことができます。オンラインでもあまり見つかりません。誰かがこれを構築する方法について何かアイデアがありますか?
[編集:おそらく、MATLAB 7.8(r2009a)、Python 2.5.4(python.org)を搭載したOS X 10.6.1を追加する必要があります-gcc-4.0とgcc-4.2(apple)の両方を試しました]
python - Python の拡張: C モジュールをプリロードする
私が書いたいくつかの C 関数で Python インタープリターを拡張しようとしています。ドキュメントを読んでから、これらの機能を公開するには、ユーザーは機能を含むモジュールをインポートする必要があります。
ユーザーが入力する必要がないように、C API を介してモジュールをプリロードまたはプリインポートすることは可能import <mymodule>
ですか? またはさらに良いfrom <mymodule> import <function>
ですか?
編集: PyRun_SimpleString("from mymodule import myfunction") を Py_Initialize(); の直後に実行できます。- これを行う別の方法があるかどうか疑問に思っていました..?
編集 2:つまり、Python インタープリターを組み込んだ C で記述されたアプリケーションがあります。そのアプリケーションは、ユーザーがアプリ用の簡単な Python スクリプトを記述できるように、ユーザーに公開したいいくつかの機能を提供します。私が望むのは、from mymodule import myfunction1, myfunction2
非常に特殊なアプリであり、とにかくアプリなしではスクリプトが機能しないため、書く必要をなくすことimport ...
だけです。常に要求するのは意味がありません。
python - Python リストを GList に変換するスマートな方法をお探しですか?
私は本当に C -> Python のやり取りが初めてで、現在、ファイルを読み取り (Python を使用して解析する)、解析された情報を使用して小さな Python スニペットを実行する小さなアプリを C で作成しています。現時点では、車輪を再発明しているように感じています。たとえば、次の機能です。
メモリリークやエラーが発生しにくい、より簡単でスマートな方法でこれを行いたいと思います。
すべてのコメントと提案を歓迎します。
ironpython - WinFormsアプリにIronPythonを埋め込み、実行を中断する
バックグラウンド
- http://blog.peterlesliemorris.com/archive/2010/05/19/embedding-ironpython-into-ac-application.aspxのような手法を使用して、WinFormアプリにIronPythonを正常に埋め込むことができました。
- 埋め込みのコンテキストでは、ユーザーは書き込みループなどを使用できます。
- IronPython 2.6(IronPython for.NET2.0およびIronPythonfor.NET 4.0)を使用しています
私の問題
- ユーザーはコードの実行を中断する必要があります
- つまり、コマンドラインからPythonまたはIronPythonを実行するときに、CTRL-Cを押して実行を停止する機能などが必要です。
- WinFormにボタンを追加して、押すと実行が停止するようにしたいのですが、これを行う方法がわかりません。
私の質問
- 「停止」ボタンを押すと、入力したIronPythonコードを使用して実行が実際に停止するようにするにはどうすればよいですか?
ノート
- 注:その「セッション」を単純に破棄したくはありません。ユーザーがセッションを操作して、セッションが停止する前に利用可能だった結果にアクセスできるようにしたいのです。
- これを別のスレッドで実行する必要があると想定しています。これを正しく実行するためのガイダンスまたはサンプルコードをいただければ幸いです。
python - C/C++ プログラムから呼び出される複数のオペレーティング システム スレッド上の複数の独立した組み込み Python インタープリター
C/C++ アプリケーションへの Python インタープリターの埋め込みについては、十分に文書化されています。C/C++ アプリケーションから呼び出される複数のオペレーティング システム スレッド (つまり、同じプロセス内の 1 つのオペレーティング システム スレッドで 1 つのインタープリター) で複数の Python インタープリターを実行するための最良の方法は何ですか? このようなアプリケーションでは、メモリの断片化やPy_Finalize() の制限に関連する問題も発生する可能性があります。
そのようなアプローチの 1 つとして、次のようなものがあります。
- Python スレッド、したがって pyconfig.h で GIL を無効にして単純化 (#undef WITH_THREAD)
- Python インタープリター ソース コードの可変グローバル変数はすべて、スレッド ローカル ストレージを介して参照されるヒープ割り当て構造体に移動されました (参照: Python on a Phone )。
私の質問は次のとおりです。
- より良いアプローチはありますか?
- Python インタープリター ソース コードのグローバル変数を、TLS (スレッド ローカル ストレージ) 経由で参照されるヒープ割り当て構造体に自動変換できるツールはありますか?
同様のトピックがここで議論されています:
dynamic-binding - 埋め込みPythonで実行中にバインディングを解決する方法は?
Python を C++ アプリケーションに埋め込んでいます。を使用して Python コードを実行する予定ですが、ローカルとグローバルPyEval_EvalCode
を辞書として提供する代わりに、プログラムでシンボル参照を動的に解決する方法を探しています。
たとえば、Python コードが次の式で構成されているとします。
bear
、lion
およびbunny
それらに関連するオブジェクトを に渡す辞書に配置する代わりにPyEval_EvalCode
、Python インタープリターがプログラムをコールバックして、これらの名前付きオブジェクトを要求するようにします。
これを達成する方法はありますか?
c++ - C / C ++からPythonメソッドを呼び出し、その戻り値を抽出する
CのPythonモジュールで定義されているカスタム関数を呼び出したいのですが、それを行うための予備的なコードがいくつかありますが、出力をstdoutに出力するだけです。
mytest.py
test.cpp
戻り値をCに抽出し、Cで使用するにはどうすればよいdouble
ですか?
python - pywin32キャプティブインストール(py * .dllがsystem32ディレクトリにインストールされないようにします)
アプリケーションに埋め込まれたスクリプト環境としてPythonを使用しています。アプリケーションにPythonビット(python26.dll、DLL、およびLibフォルダー)を提供します。これはすべて、ユーザーにPythonのインストールを要求しないようにするためです(大企業ではPythonがどのように機能するかを知っています)。
pywin32を除いて、すべてうまく機能します。pythoncom26.dllとpywintypes26.dllをsystem32ディレクトリにインストールします。これらのdllをPythonディレクトリに保持したいと思います。1つのオプションは、PythonディレクトリをPATHenv変数に追加することです。しかし、明らかな理由でそれを避けたいと思います(Windows DLL検索パスの優先順位の問題)。
これらのpywin32dllをロードするために私のディレクトリを調べるようにWindows(Windows APIも問題ありません)に指示する方法はありますか?私が理解していることから、これらのdllはWindowsCOMによって呼び出されます。
ありがとう。
編集1:Pythonは私のアプリケーションに埋め込まれてデプロイされていることに注意してください。