問題タブ [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 - 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は私のアプリケーションに埋め込まれてデプロイされていることに注意してください。
python - Python の C API を使用してオブジェクトを作成する
オブジェクトのレイアウトを次のように定義しているとします。
...そして私の型定義:
pyfoo
C 拡張内のどこかに新しいインスタンスを作成するにはどうすればよいですか?
c++ - Visual Studio 2010 C ++ファイルにPythonを埋め込もうとしましたが、コード1で終了します
ms visual studio c ++2010で開発しているc++アプリケーションにPythonコードを埋め込もうとしています。しかし、プログラムを実行すると、Py_initialize()を呼び出すとコード0x01で終了します。
何が悪かったのかを知る方法がわかりません。ヘルプファイルには、Py_Initializeはエラー値を返すことができず、致命的に失敗するだけであると記載されています。しかし、なぜ失敗したのでしょうか。
自己コンパイルされたpython27_d.dllを使用しています。これは、python.orgからダウンロードしたソースのmsvsプロジェクトファイルを使用して作成しました。
c++ - c++コードでpythonstdoutをキャッチする方法
実行中にいくつかのタスクを実行するためにPythonを呼び出す必要があるプログラムがあります。pythonを呼び出し、 pythons stdoutをキャッチして、それをファイルに入れる関数が必要です。これは関数の宣言です
私の問題は、特定のコマンド(pythonInput)のすべてのPython出力をキャッチすることです。私はPythonAPIの経験がなく、これを行うための正しい手法がわかりません。私が最初に試したのは、Py_run_SimpleStringを使用してPythonのsdtoutとstderrをリダイレクトすることです。これは、私が作成したコードの例です。
これを行うためのより良い方法はありますか?さらに、何らかの理由で、PyRun_SimpleStringは数式を取得しても何もしません。たとえば、PyRun_SimpleString( "5 ** 3")は何も出力しません(python conlsulは結果を出力します:125)
多分それは重要です、私はビジュアルスタジオ2008を使用しています。ありがとう、アレックス
マークの提案に従って私が行った変更:
mainを実行した後に取得する出力:
それは私にとっては良いことですが、問題は1つだけです。
理由はわかりませんが、次のコマンドを実行した後:PythonPrinting( "1 + 5")、PyString_AsString(output)コマンドは6ではなく空の文字列(char *)を返します...:(これを失うことができない何かがありますか出力?
サックス、アレックス
c++ - Pythonインタープリターの出力をリダイレクトして、C++プログラムの文字列でキャッチする方法は?
私はpython C++ APIを使用して、C++プログラムからpythonコマンドを実行しています。すべてのpython出力を文字列にキャッチしたいのですが、pythonのstdoutおよびstderr出力をキャッチするために、次のリダイレクトで管理しました。
しかし、pythonsインタープリターの出力もキャッチするために何をすべきかわかりません....
python - Python を C に埋め込む、未定義のシンボル: PyExc_ImportError
Python モジュールをロードする Audacious Media Player 用のプラグインを作成しようとしています。Python 埋め込みコードはpython-2.6
ソース (embed/Demo) からのものです。これはコマンドラインでコンパイルされ、
gcc -o demo demo.c -lpython2.6 -lm -L/usr/lib/python2.6/config
-lpython2.6 -lm -L/usr/lib/python2.6/config
CC引数に追加しました。
そして、インポートpygtk
とgtk
モジュールを実行する Python スクリプトをロードします。これは正常に機能します。
しかし、プラグイン (共有ライブラリ) をコンパイルした後、次のエラーが発生します (これはgtk
、ネイティブ ライブラリを使用するすべての python モジュールで同じです)。
Python インタープリターをセットアップするための C コードには、PySys_SetArgv
呼び出しがないだけです。私はそれを偽造しようとしましたが、同じエラーが発生しました!
c++ - 実行時に PYTHONPATH を変更することは可能ですか?
Python インタープリターに動的にリンクされた C++ アプリケーションがあります。特定のディレクトリから python モジュールをインポートできるようにしたいと考えています。PYTHONPATH に追加したパスが sys.path に含まれるように、プロセスの PYTHONPATH を変更したいと考えています。このドキュメントによると、それが機能する方法のようです:
http://docs.python.org/c-api/intro.html#embedding-python
ただし、Python-land から sys.path を出力すると、設定した内容ではなく、PYTHONPATH の元の内容が含まれます。これが私がやっていることの例です(Boost.Pythonを使用):
PS - 私の目標を達成する他の方法があることは知っていますが、それは私が求めているものではありません. sys.path を設定するときに Py_Initialize() が PYTHONPATH の現在の値を使用しないのはなぜでしょうか。それとも、それがどのように機能するかを誤解していますか?
boost - 埋め込まれたPythonはモジュールをロードしますが、そのモジュールの内部インポートステートメントはロードしません
ついに(!)Boost :: Pythonをコンパイルし、XCodeプロジェクトでローカルモジュールをインポートできるようになりました。このモジュールは次の行で始まりますが、from xml.dom import minidom
実行すると次のエラーが発生します。
ただし、xml Pythonモジュールをインストールしたことはわかっています。コマンドプロンプトからPythonを開いて入力するとfrom xml.dom import minidom
、すべてがスムーズに進みます。さらに、モジュールをインポートすると、期待どおりに動作します。
sys.pathに問題があるのではないかと思ったので、プロンプトから取得したものと組み込みモジュールで使用されているものを比較しました。唯一の違いは、埋め込まれたsys.pathに''が含まれていないことです。追加してみましたが、動作は変わりませんでした。
また、埋め込みバージョンがプロンプトから使用していたものとは異なるバージョンのPythonにアクセスしているのではないかと疑っていましたが、sys.prefixは両方の実行間で一致していました。
これが私のモジュールをインポートして実行するコードです。この時点で、モジュールを埋め込むことができることを確認したいので(私は完全に初心者のC ++プログラマーです)、現時点ではかなり必要最低限のものです(まだ参照カウントもありません)。
私はおそらくboost::pythonについて何か重要なことを誤解しています。誰かが私を助けることができますか?
c++ - PythonをC++で埋め込み/拡張する際の複雑なデータ構造
Pythonのドキュメントには、 C \C++を使用したPythonの拡張と埋め込みに関する優れた入門書が記載されています。ただし、多くの場合、言語間で複雑なデータ構造を転送する必要があります。
これを達成するための最良の方法は何でしょうか?
python - C\C++ に Python を埋め込む際の Python 印刷出力
ステートメントが Python 関数内にある場合、組み込み Python 構成で C\C++ から呼び出されたprint
場合、Python はどこに移動しますか?print